mo <- module_run(paper, "coi_check")
mo$traffic_light#> [1] "green"
mo$summary_text#> [1] "A conflict of interest statement was detected."
mo$table |>
knitr::kable()| paper_id | text |
|---|---|
| to_err_is_human | The authors declare a conflict of interest. |
The coi_check module looks for a conflict of interest (COI) statement — a disclosure of any financial or personal interests that could have influenced the research (or a declaration that there are none). Like the funding statement, a COI declaration is expected by most journals and reporting guidelines.
The module searches the text for the phrases COI statements usually contain and returns the sentence(s) it finds. It checks only that a statement is present; it does not evaluate the disclosed interests.
This module is fully offline.
The demo paper contains a conflict of interest statement, so the module returns a green light:
paper <- demopaper()
module_run(paper, "coi_check")COI Check: A conflict of interest statement was detected.
The table holds the matching sentence(s):
mo <- module_run(paper, "coi_check")
mo$traffic_light#> [1] "green"
mo$summary_text#> [1] "A conflict of interest statement was detected."
mo$table |>
knitr::kable()| paper_id | text |
|---|---|
| to_err_is_human | The authors declare a conflict of interest. |
A detected statement means the disclosure exists, not that it is complete or correct — read it to see what was declared. When no statement is found, the phrasing may simply differ from what the module searches for, so check the paper before concluding one is absent.
coi_check takes only the paper argument.
This module incorporates code from rtransparent, whose approach was validated by Serghiou and colleagues (2021). The companion funding statement module works the same way for funding disclosures.
coi_check works differently from most Metacheck modules: instead of exact regular expressions, it uses approximate (fuzzy) matching, which tolerates small spelling and spacing differences. It looks for sentences that approximately contain one of seven core phrases:
Because fuzzy matching alone would catch many incidental uses of these words (a paper can mention a participant’s “competing interests” or a “disclosure” of something unrelated), the module then applies a set of rules to decide whether a candidate sentence is really a COI statement rather than a passing mention. A candidate is kept when it shows at least one of the hallmarks of a genuine statement:
A bare mention of “competing interest” with none of these features is treated as a false positive and dropped.
Two further refinements handle layout quirks of converted PDFs. When a hit ends with “interest:” or begins with “Disclosure:”, the module treats text from that point onward as the disclosure section, and when a statement is split across short lines or set as bullet points (so the keyword sits on one line and “None.” on the next), it stitches the adjacent lines back together so the full statement is captured. It also specifically excludes “financial disclosure” and unrelated uses of “disclosure” (such as a patient-information disclosure) that are not about conflicts of interest.
As with the funding check, the practical implication is that detection is built around a specific vocabulary. A disclosure that avoids the words conflict, competing, disclosure, declaration, and duality of interest — or one badly garbled in extraction — can be missed, so a red light means “no recognisable COI statement found” rather than a guaranteed absence.