> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coloop.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Detect and review adverse events

> Find reportable adverse events, product complaints and special situations in your transcripts, review each case against the participant's own words, and export what you keep.

<Info>
  Adverse event detection is in beta and is switched on per workspace. If you don't see **Adverse events** in your project's side menu, ask your CoLoop contact to enable it.
</Info>

Adverse event detection reads your processed transcripts and raises a case for every reportable occurrence a participant describes. You review each case against the quotes it rests on, accept or reject it, and export the cases you keep for your pharmacovigilance team, as a case log or as filled-in report forms.

Detection raises three kinds of case, following the ABPI/BHBIA guidance for market research:

* **Adverse event:** an untoward medical occurrence in a patient.
* **Product complaint:** a fault with the product or its packaging, rather than its effect on the patient.
* **Special situation:** off-label use, overdose or misuse, pregnancy exposure, lack of efficacy, medication error, withdrawal and the other enumerated situations.

## Before you start

* [Upload your files and create transcripts](/docs/setting-up-a-project/create-a-transcript). Detection reads finished transcripts only: audio, video and text files that have completed processing.
* You need edit access to the project to add products, run detection, record verdicts and change the report form. Viewers can read cases but not decide them.

## Choose how to start

In the project side menu, under **Analysis**, click **Adverse events**. Before detection has run in a project, the page offers two ways to start.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/detection-start.png" alt="The Adverse events page before any detection, with the heading Start detecting adverse events and two cards side by side: Add product names, marked Recommended, with a Product names button, and Detect without product names, with a Detect button" style={{ borderRadius: "6px" }} />

* **Add product names** if you know which products your study covers. Detection then knows which products to look for. If you also upload their labels, it can raise off-label use and doses above the licensed maximum. Detection starts on its own when you close the dialog after adding your first products.
* **Detect without product names** if you don't know the products yet. Detection still finds adverse events, product complaints and special situations, but it can't judge use against a license it doesn't have.

If **Detect** is unavailable, the project has no processed transcripts yet. Upload files and wait for them to finish processing.

## Add products

Add each product in your study by picking it from an official list or typing its name. Then upload its label, or enter its details yourself, if you want detection to judge off-label use and doses. A project can have up to 30 products.

Click **Product names** in the start card, or at the top right of the page, to open the dialog.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/product-names-dialog.png" alt="The Product names dialog: on the left, Add a product with a US market dropdown inside a search box, and Add details from labels with a drop area, a text box and an Extract products button; on the right, a Products table with columns Product, Route · formulation, Indications, Dose range, Licensed population" style={{ borderRadius: "6px" }} />

When you add the project's first product, CoLoop turns on **Auto-detect new transcripts**. When you then close the dialog, it runs detection over every transcript you haven't ruled on, using every product you added. You don't need to start detection yourself. If your first products come only from a label, detection runs when its extraction finishes.

### Pick a product from the official list

1. Under **Add a product**, check the market in the dropdown inside the search box.

   | Market | Official list |
   | - | - |
   | US | FDA |
   | UK | NHS dm+d |
   | EU | EMA |
   | Other | None. [Add the name as typed](#add-a-name-that-isnt-listed). |

2. Type a molecule or brand name. Results appear as you type, and a misspelled name still finds close matches.

3. Click a result, or move to it with the arrow keys and press **Enter**:
   * A **Brand** result adds that brand only. You can add brands that share a molecule but differ in license, such as Ozempic and Wegovy, as separate products.
   * A **Molecule** result adds the substance in general, with its most common brands.

The product appears in the table with its brands, routes and formulations. Indications, dose range and licensed population stay empty until you [add details from its label](#add-details-from-labels) or [enter them yourself](#edit-a-product). A result marked **Already added** is in the table for that market.

### Add a name that isn't listed

Use this for investigational drugs, internal codes, products in the **Other** market, or anything the list doesn't have.

1. Type the name in the search box.
2. Press **Enter**, or click **Use "…" as typed**.

The table shows the product with **Added as typed** under its name.

### Add details from labels

Upload a product's SmPC, PIL or internal label so detection knows its indications, doses and licensed population.

1. Under **Add details from labels**, add your sources:
   * Drop up to 10 `.docx` or PDF files on the drop area, or click **browse** to choose them.
   * Paste label text in the text box, such as its indications, posology or product names.
2. Wait for every file to finish uploading, then click **Extract products**.
3. A card shows while extraction runs, usually for under a minute. You can keep working or close the dialog.

When extraction finishes, each product it finds fills in the matching product in the table: the same molecule, in the market selected under **Add a product**, preferring a row with the same brand. Only empty fields are filled, so details you entered are never replaced. New brand names are added to the row. A product with no match is added as a new row. The rows that change are briefly highlighted.

A PDF must have selectable text. Scanned PDFs can't be read: use a text-based copy of the label, or paste its text instead.

<Tip>
  To replace a product's details with a newer label, [edit the product](#edit-a-product) and empty the fields you want replaced, then upload the label.
</Tip>

### Edit a product

Correct a product's details, or enter what you know when you don't have its label.

1. Hover over the cell you want to change in the **Products** table, then click the pencil icon.

2. Change the fields:

   | Column | Fields |
   | - | - |
   | Product | Molecule (INN), brand names separated by commas, and market |
   | Route · formulation | Routes and formulations, each separated by commas |
   | Indications | One indication per line |
   | Dose range | **Min**, **Max**, **Unit** and **Per** (dose, day, week, month or cycle). Leave **Min** or **Max** empty for an open-ended range, or both to clear it. |
   | Licensed population | Who the product is licensed for, such as "Adults; children ≥1 year" |

3. Click **Save**, or press **Enter**. In **Indications** and **Licensed population**, press **⌘↵** (**Ctrl+Enter** on Windows), since **Enter** starts a new line. Press **Esc** to cancel.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/product-names-edit-dose.png" alt="A row of the Products table with the Dose range editor open over its cell: Min 0.25 and Max 2.4, Unit mg, Per week, the line Shows as: 0.25–2.4 mg per week, and Cancel and Save buttons" style={{ borderRadius: "6px" }} />

Detection uses your changes from the next run. To check transcripts already detected against them, [run detection again](#run-detection-again). A label you upload later fills only the fields that are still empty, so it never replaces what you entered.

### Remove a product

Click the trash icon at the end of the product's row.

### If adding a product doesn't work

* **The search says the official list isn't available right now.** Type the name and press **Enter** to add it as typed.
* **A file shows "Upload failed."** Remove it, then add it again. **Extract products** stays unavailable until every file has uploaded or been removed.
* **"Could not read these sources." appears.** The message beneath it gives the reason. A scanned PDF has no selectable text, a file that isn't a `.docx` or PDF can't be used, and sources with more text than one extraction can read must be shortened. Fix the sources, then click **Extract products** again. Your files and pasted text stay in place.
* **A notice reads "Could not read" followed by the source names.** Extraction didn't finish, and the reason is shown in the notice. Click **Dismiss**, then add the sources again.
* **"No products found in those sources." or "Nothing new in those sources." appears.** Extraction read them but found no licensed product. Check you added the right documents.
* **"This product is already in the product list." appears when you change a product's market.** That market already has the same product from its official list. Keep the market as it was, or remove the other product first.
* **The search box is unavailable and says the project has 30 products.** Remove a product you don't need. An extraction that would take the project past 30 products is refused the same way.

## Run detection

1. Click **Detect** in the start card, or click **⋯** at the top right of the page and then **Detect**.
2. Wait for the runs to finish, which may take a few minutes.

When a run finishes, its transcript lists one card per case. A transcript with nothing reportable reads **Nothing reportable was found in this transcript.**

## Review each case

Each case is one card. The left side is what detection found. The right side is the participant's own words it rests on.

* **Participant and case number:** case numbers run across the whole project, so each case keeps its number in exports and report forms.
* **Category:** Adverse event, Product complaint or Special situation, and the product named, or *No product named*.
* **Description:** one sentence summarizing the occurrence.
* **Quotes:** the exact words from the transcript that evidence the case. The researcher's question that prompted them is shown above. To hide it, click **Display**, then turn off **Quote context**.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/case-card-with-context.png" alt="A single case card: participant name, Case 001, an Adverse event badge with Methotrexate, a one-line description, Accept and Reject buttons on the left; on the right a quote count with a download icon, a Researcher question in muted italics above two quotes, and an Expand button" style={{ borderRadius: "6px" }} />

To decide a case:

1. Read the quotes and ask whether the description is a fair account of them.
2. Click **Accept** or **Reject**. The card updates immediately. A rejected case dims and is struck through, but stays visible so you can see what you rejected.
3. If you change your mind, click the active verdict again to clear it.

Click **Expand** to open the transcript beside the case, with the quoted words highlighted in their turn. Use this when a quote needs its surrounding context before you can judge it.

The **Adverse events** item in the side menu shows how many cases are still waiting for a verdict.

### Merge cases from one answer

Detection raises one case per occurrence, so a participant who says they had nausea and vomiting on a medicine gets two cases. They can be merged if you want to report them as one event.

You can merge cases from the same transcript that have the same participant, product and category, and quote exactly the same answers. The list groups these cases together under **Cases 010 and 011 quote the same answer**.

1. In the group, click **Merge 2 cases**. The button shows how many cases the group holds. If the group already holds a merged case, click **Add to merge**.
2. Untick any case you want to keep separate. You need at least two.
3. Check the description. It starts as the cases' descriptions joined together. Rewrite it the way you'll report the event, for example *Gastrointestinal side effects: nausea and vomiting*.
4. Click **Merge**, or press **⌘↵** (**Ctrl+Enter** on Windows).

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/merge-cases-dialog.png" alt="The Merge cases dialog: Case 010 and Case 011 ticked with their descriptions and Pending badges, then Result · Case 010, a Description box reading Gastrointestinal side effects: nausea and vomiting, Review status Pending, Quotes 3 quotes · 1 repeat removed, and Cancel and Merge 2 cases buttons" style={{ borderRadius: "6px" }} />

The merged case keeps the lowest case number, and the other cases leave the list. It holds every quote from the cases you merged, without repeats. It exports as one row in the case log, with one report form.

To undo a merge, click **Split** under the merged case's number, then **Split into 2 cases**. Every original case comes back with its own number, description, quotes and review status. The merged case's description and review status are discarded.

## Filter and sort cases

Use the bar above the list to focus on the cases you're working on.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/filter-bar.png" alt="The filter bar above the case list: status tabs All, Pending, Accepted and Rejected with counts, Files, Participants and Products filter buttons, a Clear button, and a sort button on the right reading Detected date Newest first" style={{ borderRadius: "6px" }} />

* **Status:** click **All**, **Pending**, **Accepted** or **Rejected** to show only cases with that verdict. Each tab shows how many cases it holds. Work through **Pending** to clear your queue: a case leaves the tab as soon as you decide it.
* **Files:** click **Files**, then search for and select the transcripts to show.
* **Participants:** click **Participants**, then search for and select the participants to show.
* **Products:** click **Products**, then search for and select the products to show. The list offers every product named by a detected case. Until a case names one, it reads "No products detected yet."
* **Sort:** click the sort button on the right, then choose **By filename** or **By detected date** and a direction. Transcripts are listed newest detection date first by default.

To remove the file, participant and product filters, click **Clear**. Clear keeps the status tab and the sort order you chose.

Filters and sort apply only to your view and reset when you reload the page.

## Run detection again

Run detection again to pick up transcripts that failed, or to replace results after you change the project's products.

1. Click **⋯** at the top right of the page, then **Redetect**.
2. Choose which transcripts to run:
   * **All transcripts:** every processed transcript in the project.
   * **Transcripts without results:** transcripts that were never detected, failed, or have results that can't be read.
   * **Unreviewed transcripts:** transcripts with no accepted or rejected case.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/redetect-menu.png" alt="The ⋯ menu open with an Auto-detect new transcripts switch, a Redetect item with its submenu showing All transcripts, Transcripts without results and Unreviewed transcripts with a count beside each, and an Export item below" style={{ borderRadius: "6px" }} />

<Warning>
  Redetecting a transcript replaces its cases and discards every verdict and merge on them. If you choose **All transcripts** and some have reviewed cases, CoLoop asks you to confirm first. Choose **Unreviewed transcripts** to keep your review work.
</Warning>

**Redetect** is unavailable while detection is running. Wait for the finished notification, then try again.

## Detect new transcripts automatically

While **Auto-detect new transcripts** is on, every transcript runs through detection as soon as it finishes processing. CoLoop turns it on for you when you [add the project's first product](#add-products).

To turn it off or on, click **⋯** at the top right of the page, then click the **Auto-detect new transcripts** switch. Turning it on starts nothing for transcripts already in the project. Use [Redetect](#run-detection-again) for those.

A reprocessed transcript is detected again only if you haven't ruled on any of its cases.

## Choose the report form

Case forms are filled into one of two standard forms, depending on where the project's data is stored:

* **BHBIA AE/PC/SRS form** for projects stored in the UK.
* **EPHMRA AE reporting form** for projects stored in the US or any other region.

You can switch to the other standard form, or upload the form your client asks for. Downloads and the zip export then fill that form instead.

### Switch standard form

1. Click **Report form** at the top right of the page. The dialog shows the form in use, filled with sample data, beside the case details it's filled with and the places left for the researcher.
2. Open the form menu at the top of the dialog and pick the other standard form.

The change applies straight away to every case form you download.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/report-form-default.png" alt="The Report form dialog for a project using a standard form: a form menu at the top showing the form in use, lists headed Filled from each case and Left for the researcher on the left, and the form filled with sample data on the right with a Download sample button" style={{ borderRadius: "6px" }} />

### Use your own form

Upload the blank or pre-filled form as a Word (`.docx`) file of up to 30 MB, or a fillable PDF of up to 50 MB. A fillable PDF is one where you can click into the boxes and type. Scanned or flattened PDFs, PDFs protected against editing and dynamic (XFA) PDFs can't be filled.

1. Click **Report form** at the top right of the page.
2. Open the form menu and click **Upload your own form…**, then choose the file.
3. Wait while CoLoop reads the form and finds where each case detail goes. This may take a few minutes. You can close the dialog in the meantime: **Your report form is ready to review** appears when it's done.

### Review where case details land

The review lists every place on your form, beside the form filled with sample data:

* **Filled from each case:** the places CoLoop fills, and which case detail goes in each.
* **Kept from your form:** answers already written on the file, which appear on every form as written. Ones marked **About one case**, such as a patient's age, describe a single case: remove them from the file and upload it again.
* **Left for the researcher:** places CoLoop leaves blank for you to complete.

If your form has no place for a case detail, it's listed under **Not asked for on this form**. Click **Download sample** to open the sample in Word or a PDF reader and check the layout there.

<img src="https://cdn.coloop.ai/mintlify-coloop-docs/images/docs-assets/adverse-events/report-form-review.png" alt="The Report form dialog reviewing an uploaded form: a Not in use yet notice beside the form menu; on the left, lists headed Filled from each case, Kept from your form and Left for the researcher; on the right, the uploaded form filled with sample data; Discard upload and Use this form buttons in the footer" style={{ borderRadius: "6px" }} />

Then decide:

* **If the details land in the right places,** click **Use this form**. The dialog closes, and every case form you download from now on uses it.
* **If something lands in the wrong place,** correct the file and click **Replace file**, or click **Discard upload** to keep the current form.

Until you click **Use this form**, downloads keep using the current form.

### Replace your form or go back to a standard form

Click **Report form** to see the form in use and when it was chosen.

* **To use a new version,** click **Replace file** and upload it. You review it the same way, and the current form stays in use until you click **Use this form**.
* **To go back to a standard form,** pick it from the form menu. Your form stays in the menu under **Your form**, so you can switch back to it without uploading it again.

To have CoLoop read a form again, for example after you correct it, upload it again.

### How a PDF form is filled

CoLoop writes into a fillable PDF's own fields in Helvetica, making text smaller where it doesn't fit its box. A box the form draws as several lines takes the text across all of them.

A PDF form can't take every case. The download stops with a message if a case's text doesn't fit its box even in the smallest print, or uses characters the form can't show, such as letters outside Western European languages. Fill that case's form in by hand, or replace the project's form with a Word version, which has no such limits.

## Export cases

1. Filter the list down to the cases you want to export, or leave it unfiltered to export every case.
2. Click **⋯** at the top right of the page, then **Export**.
3. Choose a format:
   * **Case log (.xlsx):** an Excel workbook with one row per case.
   * **Report forms + case log (.zip):** a report form for each case, with the case log beside them. Each form is the project's [report form](#choose-the-report-form): the standard form for the project's storage region unless you've chosen another.

The export contains exactly the cases the list shows, minus any rejected cases. Rejected cases are never exported. Pending cases are included. The menu shows how many cases the export holds, and says **filtered** when a filter or status tab is narrowing it.

The case log has these columns: File, Case, Participant, Category, Product, Description, Evidence, Review status. The header row is frozen and filterable.

Each report form is filled in with your organization, your name, the project, the date the case was detected, the case reference, the product, and the event details with the participant's quotes, wherever the form asks for them. Check and complete the rest of the form before you send it.

**Export** is unavailable when the list holds no exportable cases, for example on the **Rejected** tab.

### Download one case's report form

To get the report form for a single case, click the download icon above the case's quotes. The form downloads named after the case number and the project, as a `.docx`, or as a `.pdf` if the project's report form is a PDF.

## If something goes wrong

* **A transcript reads "Detection failed."** The reason is shown beneath it. Click **⋯**, then **Redetect** > **Transcripts without results** to retry. A failed run has no verdicts to lose.
* **A transcript reads "This run's results could not be read."** The stored result can't be opened by the current version of CoLoop. This is not the same as finding nothing. Click **⋯**, then **Redetect** > **Transcripts without results**.
* **Cases from the same answer aren't grouped for merging.** Cases are grouped only when they have the same participant, product and category, and quote exactly the same answers. If one of them also quotes another part of the transcript, it can't be merged with the others.
* **The list reads "No cases match these filters."** Click **Clear filters** to remove the file, participant and product filters, or choose another status tab.
* **The page reads "Could not load adverse events."** Click **Try again**. If it persists, refresh the page.
* **The Report form dialog reads "Could not use" and your file's name.** The reason and what to do are shown beneath it. Most often the PDF has no fillable fields, is protected against editing, or is a dynamic (XFA) form. Upload the Word version or a fillable copy with **Upload another file**, or click **Dismiss** to keep the current form.
* **The download icon and the zip option are unavailable.** The page is still checking which report form the project uses. If **Report form** shows a red warning icon, the check failed: click **Report form**, then **Try again**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.