🏛 Part of the "health" topic shelf →
How Many Pitfalls Lie Between You and Checking a Drug: Nine Failures That Produce Normal-Looking Output, Each With a Rerunnable Verification
Every article in this series was researched against the same body of public data: the government's drug licence dataset, public literature-search interfaces, and trial registry result fields. Along the way we hit nine pitfalls whose common feature is that **they do not raise errors** — the query still returns, the program still exits, the numbers still print, and the answer is simply wrong (for example, searching the product-name field of the licence data by active ingredient returns 0 records, while the active-ingredient field of the same dataset holds 17 licences)[F1]. This article sets out all nine, each with a verification anyone can rerun, plus a positive control (a case that should succeed) and a negative control (a case that should fail). It closes with a should-FAIL: querying a date taken from a working-folder name as though it were a paper identifier returns a hit, and a real paper at that[F16]; only a number beyond the identifier range returns 0[F17].

1. The dangerous failure is not an error, it is normal-looking output
If a query throws an exception, you stop and investigate. None of the nine failures below throws one:
- The query went out, returned 200, and came back with 0 records — and the correct answer is not 0.
- The query returned 5 records, every one a real paper — and not one of them has anything to do with your question.
- Two passages compared character by character report "not identical" — and to the human eye they look exactly the same.
- A licence's validity date has not yet passed — but it has already been cancelled.
The shared structure of this class of failure is that the object being checked exists, but the question being asked is the wrong one. So every pitfall here comes with a pair of controls: a case that should succeed (positive control) and a case that should fail (negative control). If the negative control does not fail, then your check itself is broken.
Every pitfall below was genuinely hit in the course of writing this series.
2. Class one: the query is well formed, but you are searching the wrong field

Pitfall 1: searching licences by active ingredient returns 0 records
Symptom: wanting to find which drugs in Taiwan contain semaglutide, searching the product name by ingredient returns 0 records. It looks like the ingredient is not present in Taiwan.
How to verify: download the regulator's complete drug licence dataset, concatenate the Chinese and English product-name fields and search for `semaglutide` (case-insensitive), then search the active-ingredient summary field separately.
Result: 0 records in the product-name fields, 17 licences in the active-ingredient summary field[F1].
Positive control: switch to searching the English product-name field for `MOUNJARO`, which returns 18 — establishing that the search logic itself works[F2]. Negative control: search a non-existent string, `zzzzpatide`, and both the product-name and ingredient fields return 0 — establishing that it can return 0, not that it always returns 0[F3].
Lesson: when something returns 0, ask first whether that field stores this kind of information, and only then whether there really is nothing. The product-name field does not index ingredients; that is not a data error but a field design.
Pitfall 2: a ranked search has no answer meaning "nothing found"
Symptom: querying an English-language literature database with a Chinese term returns several records, each a real paper, which looks like relevant research exists.
How to verify: use the colloquial Chinese term for these drugs as a query string in a public literature-search interface.
Result (snapshot on the verification date): 5 records returned, the top five titled around medical progress in the Unified Silla period, needling methods for the back-shu points, the understanding and treatment of abscesses in the Song dynasty, life and the body in medieval East Asia, and the transmission of medical formula knowledge[F4]. Not one has anything to do with this class of drug — they were matched on two individual characters in the query.
Negative control: querying a random string instead returns 0 records[F5]. This step matters: it establishes that those 5 records are not a broken machine returning arbitrary output, but that the engine genuinely considered those 5 the most relevant.
Lesson: "something was returned" and "something was matched" are two different things. Any relevance-ranked search hands over what most resembles the query as its answer; it has no option to choose "nothing found" unless it can match no token at all. Cross-language queries are especially dangerous, because the false-positive rate rises high enough to become invisible.
3. Class two: filter conditions quietly delete the thing you were looking for

Pitfall 3: filtering by study type deletes review-class evidence wholesale
Symptom: to look at randomized controlled trials only, a study-type filter is added to the query. The results get cleaner, which looks professional.
How to verify: run the same topic query and compare the number of results with and without `PUB_TYPE:"Randomized Controlled Trial"`.
Result (snapshot on the verification date): 209 records without the filter, 8 with it[F6]. What was deleted includes a systematic review and meta-analysis, and a journal commentary on the same issue — tested individually by identifier, both return 0 once the filter is applied[F7].
Note a counter-intuitive result here, one our own testing rewrote twice: we originally expected the major pivotal trials to be deleted by this filter, and the first round of testing found that one withdrawal trial was not deleted and remained in the results[F6]; but testing further, another key phase 3 trial was deleted[F18].
The reason is that the type tagging is itself inconsistent. Both being phase 3 randomized trials, one carried the "randomized controlled trial" type tag and the other did not — the latter was tagged as phase 3 clinical trial, comparative study, equivalence trial, and so on[F18]. Add the type filter and whatever lacks that tag disappears entirely.
So the correct statement has three layers: a type filter will certainly delete review-class evidence that integrates multiple trials[F7]; it may also delete individual pivotal trials, depending on what that paper was tagged as[F18]; and the one deleted leaves no trace whatsoever in your result list.
This item was first overturned by our own testing against our original assumption, then partially restored and rewritten by a second round of testing.
Positive control: without the filter, the systematic review and the journal commentary mentioned above each return (1 record each)[F7]; the two phase 3 trials also each return 1 record without the filter[F18]. All four are present, and the difference lies only in which survive the filter.
Lesson: a filter will not tell you what it deleted. Before adding one, record the count without it; the difference is what you gave up.
Pitfall 4: filtering by database source makes a whole paper vanish
Symptom: habitually adding a "PubMed source only" clause to the query, because it seems more rigorous.
How to verify: test with a paper that has no PMID, only a PMC identifier. The STEP 1 body-composition analysis cited in this series is exactly that — published as a society conference abstract, with only a PMC identifier.
Result: without the source filter, 1 record is returned; adding `SRC:MED` gives 0[F8].
Positive control: switch to a paper holding both a PMID and a PMC identifier, and the same source filter still returns 1 record[F8] — establishing that the filter syntax is not the problem.
Lesson: something without a PMID is not something that does not exist. Conference abstracts, some journals' supplementary material, and preprints can all fall into this gap. If your literature search always adds a source filter, you will never know what you missed.
4. Class three: "the field exists" is not "the thing exists"
Pitfall 5: finding the indications is not finding the package insert
Symptom: having found the full indication text in public data, concluding that the package insert has been found.
How to verify: print the dataset's header row and count the fields.
Result: 28 fields in total, of which not one is warnings, contraindications, interactions, side effects, or adverse reactions[F9].
Lesson: the indications field is a small part of the package insert, not the insert. A compilation containing only indications, written up as "based on the package insert", leaves readers assuming safety information is included. Every article in this series states this explicitly.
A small trap in the same class: the dataset's download URL ends in `csv`, but the file actually downloaded is identified by the `file` command as a Zip archive[F10]. The extension and the content do not match, and opening it directly with a CSV reader fails — with an error message that usually concerns encoding, pointing the reader in the wrong direction.
Pitfall 6: a licence's validity cannot be judged from the validity date alone
(This pitfall sits here because it is also a case of a field lying.)
Symptom: judging whether a licence is still valid by whether its validity date has passed, which seems entirely natural.
How to verify: find records in the dataset where the cancellation-status field is empty but the cancellation date or reason holds a value, and count them.
Result: there are 343 such licences[F11].
Positive control: two of them are TRULICITY injection 3 mg and 4.5 mg. Their validity date is 2027/09/23 (not yet reached), but their cancellation date is 2026/03/18 with the cancellation reason recorded as voluntary cancellation, while the cancellation-status field is empty[F11]. Looking only at the validity date would judge them still valid.
Lesson: the correct approach is to treat a licence as withdrawn if any one of the three fields — cancellation status, cancellation date, cancellation reason — holds a value. This one determines directly whether the list in this series' first article is right.
5. Class four: literal comparison is more fragile than you assume

Pitfall 7: exact matching on a free-text field will always undercount
Symptom: wanting to count how many licences carry a particular indication sentence, using exact equality.
How to verify: extract the currently valid non-prescription products with orlistat as the ingredient and list every distinct indication string.
Result: 15 in total. Exact matching against the most frequent sentence hits only 8, missing 7[F12]. The differences include 「十八歲」 versus 「18歲」 for eighteen years of age, a spelled-out phrase versus a symbol for greater-than-or-equal, half-width versus full-width brackets, full stops versus commas, and one extra space before a unit.
The number of distinct variants itself depends on the counting convention, and the same 15 licences have three correct answers (wherever this series cites this figure, it states the convention)[F12]:
| Counting convention | Distinct variants |
|---|---|
| Raw strings, no processing | 8 |
| After NFKC normalisation | 6 |
| After NFKC plus removing all whitespace | 5 |
The three figures do not conflict; they count different things. Normalisation helps, but does not make the problem disappear: even at the loosest third convention, 5 variants remain, because differences like 「十八歲」 versus 「18歲」, or an enumeration comma versus an ordinary comma, are not the kind normalisation removes[F12]. Citing this kind of figure without the convention is the same as not citing it at all.
Lesson: a free-text field is under no obligation to use a uniform form. Counting such a field requires enumerating every distinct value first and then classifying them by hand; you cannot assume there is only one form.
Pitfall 8: government files contain characters the eye cannot see
Symptom: copying original insert text into your own draft, then comparing character by character in code, and getting back "not identical". To the eye the two look exactly the same.
Cause: the original file uses Unicode's CJK Compatibility Ideographs block (U+F900 to U+FAFF). These characters are identical in appearance and different in encoding from their ordinary forms.
How to verify: scan the entire dataset and count characters falling in that block.
Result (snapshot on the verification date): across the file's 72,013 data rows, 748 rows contain such characters, occurring 8,380 times in total across 85 distinct characters; the most frequent is the character for therapy. Looking at just two licences' indications fields, the Mounjaro one has 13 and the Wegovy one has 39[F13].
Positive control: applying NFKC normalisation to the same passage and rescanning gives 0 characters in that block[F13]. Negative control: scanning the licence-number field (entirely ASCII and common characters) gives 0 in that block[F13] — establishing that the scanner is not treating every character as a compatibility character.
This negative control saved us once. While preparing this article, the same scanning code was rewritten, and the upper bound of the range was written as an ordinary character identical in appearance, with the result that the scan reported all 72,013 rows as containing compatibility characters and the 85 distinct characters becoming 685. This pitfall bites the person writing the check — without a negative control, that plainly implausible set of numbers would have been written into the article as a new finding.
Lesson: when claiming characters are identical, state which normalisation was applied before comparing. This series' approach is: NFKC on both sides, then compare character by character; when quoting, replace only characters from the compatibility block with their ordinary forms, and preserve all other width, bracket, and punctuation differences exactly as in the original.
6. Class five: the same thing has more than one correct number

Pitfall 9: population counts and primary endpoints can each have several legitimate versions
Example one: the same dataset has three versions of its row count. Counting the same drug licence data different ways gives different numbers (all snapshots on the verification date): 72,013 data rows, 66,459 distinct licence numbers; and the help text of one third-party query tool states another number, 71,836[F14]. None of the three is wrong — they count different things (rows, licences, and the snapshot on the day that tool built its index).
Example two: the same trial, the same primary endpoint, and the paper and the registry give different numbers. For one withdrawal trial cited in this series, the paper's abstract gives the primary endpoint as +14.0% on placebo and −5.5% on drug; the same endpoint field in the trial registry gives 14.8% and −6.7%[F15]. The reason is written into the registry's population description: that entry's analysis excludes data from after a participant stopped the study drug, while the paper's abstract uses the calculation that does not exclude it[F15].
Lesson: "I checked against the original" carries no information unless you say which original and which calculation. Cite the counting unit and the analysis setting alongside any figure, or the next person will arrive with another equally correct figure and the argument will never converge.
7. One should-FAIL: checking only that an identifier resolves passes 100% of the time
One last thing, about checking itself.
A common quality-control practice is to check that every cited paper identifier can be looked up. That check has a fatal property: it almost always passes.
How to verify: query a number entirely unrelated to any literature as a paper identifier. We used a date from a working-folder name: `20260819`.
Result: it resolves. It is a paper published in 1946 in a cardiology journal, titled 「One hundred positive hypoxemia tests」[F16].
Negative control: switch to a number beyond the identifier range, `999999999`, and 0 records are returned[F17] — establishing that this query really can return 0, only that returning 0 is hard.
Lesson: "the identifier exists" is a check with almost no discriminating power. What really needs verifying is three things: (one) whether the paper that identifier resolves to is about the thing you said; (two) whether the figure you cited actually appears in the abstract or the registry's result field; and (three) whether a reader clicking through can actually see it. The third is especially easy to overlook — most of the pivotal trials cited in this series sit behind paywalls, so every article additionally supplies a route to an open-access version or the trial registry results page.
8. The nine pitfalls in one table, and the limits of this method
| # | Pitfall | Verification in one line | What the negative control looks like |
|---|---|---|---|
| 1 | Ingredient name finds no licence | Search both the name and ingredient fields, compare counts | A non-existent string must return 0 in both fields |
| 2 | Ranked search has no "nothing found" | Read what was returned, not how many | A random string must return 0 |
| 3 | Type filter deletes reviews | Record the count difference before and after the filter | The deleted record must be findable on its own |
| 4 | Source filter makes a paper vanish | Test with a record that has no PMID | Test with one that has a PMID; it must survive |
| 5 | Indications are not the package insert | Print the header and count the fields | Look for a warnings field; it must not be there |
| 6 | Exact matching on free text always undercounts | Enumerate all distinct values first | The most common sentence must hit fewer than the total |
| 7 | The same number has several versions | Write down the counting unit and analysis setting | Change the calculation; the number must change too |
| 8 | Invisible compatibility characters | NFKC on both sides before comparing | Scan a pure-ASCII field; it must return 0 |
| 9 | Judging by validity date alone is wrong | Any of the three cancellation fields holding a value means withdrawn | Find a case whose validity date has not passed but which is cancelled |
The limits of this method have to be stated as well.
It only handles whether a lookup was done correctly, not whether the evidence is strong. A figure correctly looked up, with its source correctly labelled, does not mean the study was well designed, and does not mean it applies to you.
It requires primary sources to be publicly obtainable. This series can work this way because the drug licence data, the literature-search interfaces, and the trial registry all have public query routes. On a topic with no public primary source this process cannot be completed, and the honest response is then to write "not found as of the verification date" with the query and the positive control attached, rather than supplying an answer that merely looks real.
It cannot protect against asking the wrong question. All these controls can check only whether the answer to the question you asked is correct; none will tell you whether the question was worth asking.
This article is a compilation of data-verification method; all lookup results are snapshots on the verification date, and it does not constitute medical advice.
This article belongs to the GLP-1 Evidence Series. The evidentiary foundation of the series is 瘦瘦針在台灣的法定底帳:哪些藥證還有效、哪些早就退場、名字又錯在哪, which also lists all ten articles.
Citations, one by one
Every `[F<n>]` marker in the text corresponds to one definition below. Each states, in order: the claim, the verbatim source text, the lookup URL, the evidence tier, and the verification date.
- [F1]|以 semaglutide 搜藥品許可證資料的中文品名+英文品名欄回傳 0 張,搜主成分略述欄回傳 17 張|(實查輸出)semaglutide: 品名欄命中=0 主成分欄命中=17|全部藥品許可證資料集;比對方式:許可證字號去重後,對「中文品名+英文品名」與「主成分略述」分別做小寫子字串比對|editorial(我們的計數,方法如左)|2026-08-26
- [F2]|正控制:以 MOUNJARO 搜英文品名欄回傳 18 張|(實查輸出)正控制 MOUNJARO in 英文品名 = 18|同 F1|editorial|2026-08-26
- [F3]|負控制:以 zzzzpatide 搜品名欄與主成分欄皆回傳 0 張|(實查輸出)負控制 zzzzpatide 品名欄 = 0 主成分欄 = 0|同 F1|editorial|2026-08-26
- [F4]|以「瘦瘦針」查 Europe PMC,實查日回傳 5 筆,前五篇為古代東亞醫學史相關論文|(實查輸出)hitCount(當日快照)= 5/37257929 How Did the Clinical Medicine Progress during the Unified Silla Era/36316824 Anatomical structures and needling method of the back-shu points BL18, BL20, and BL22/38768993 The Perception and Treatment of People about Abscesses in the Song Period/31092803 An Exploration into Life, Body, Materials, Culture of Mediaeval East Asia/29724986 Knowledge Transmission of Medical Prescription and the Role of the Literati Officials|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&pageSize=5&query=%E7%98%A6%E7%98%A6%E9%87%9D|editorial(實查日快照;筆數會變動)|2026-08-26
- [F5]|負控制:以亂數字串 zzqqxxvvnonsense 查詢,回傳 0 筆|(實查輸出)hitCount(當日快照)= 0|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&pageSize=5&query=zzqqxxvvnonsense|editorial|2026-08-26
- [F6]|同一主題查詢加上研究型別過濾,實查日筆數自 209 降為 8;該主題的主要停藥試驗在加過濾後仍留在結果內|(實查輸出)不加過濾 hitCount= 209/加 PUB_TYPE 過濾 hitCount= 8,結果清單含 38078870|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=tirzepatide%20AND%20withdrawal%20AND%20%22weight%20regain%22(與加上 %20AND%20PUB_TYPE:%22Randomized%20Controlled%20Trial%22 的版本比較)|editorial(實查日快照)|2026-08-26
- [F7]|一篇系統性回顧(PMID 42534203)與一篇期刊評論(PMID 42043833)在加上研究型別過濾後皆為 0 筆,不加過濾時各為 1 筆|(實查輸出)EXT_ID:42534203 無過濾 hitCount= 1/加RCT過濾 hitCount= 0;EXT_ID:42043833 無過濾 hitCount= 1/加RCT過濾 hitCount= 0|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:42534203%20AND%20SRC:MED(與加上型別過濾的版本比較)|editorial(實查日快照)|2026-08-26
- [F8]|PMC8089287 不加來源過濾回傳 1 筆,加上 SRC:MED 回傳 0 筆;正控制 PMC9542252 加上 SRC:MED 仍回傳 1 筆|(實查輸出)A. PMCID:PMC8089287(無過濾)hitCount= 1/B. PMCID:PMC8089287 AND SRC:MED hitCount= 0/C. PMCID:PMC9542252 AND SRC:MED hitCount= 1|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=PMCID:PMC8089287(與加上 %20AND%20SRC:MED 的版本比較)|editorial|2026-08-26
- [F9]|藥品許可證資料集共 28 欄,無警語、禁忌、交互作用、副作用或不良反應欄位|許可證字號、註銷狀態、註銷日期、註銷理由、有效日期、發證日期、許可證種類、舊證字號、通關簽審文件編號、中文品名、英文品名、適應症、劑型、包裝、藥品類別、管制藥品分類級別、主成分略述、申請商名稱、申請商地址、申請商統一編號、製造商名稱、製造廠廠址、製造廠公司地址、製造廠國別、製程、異動日期、用法用量、包裝與國際條碼|同上資料集 CSV 表頭列|official_text|2026-08-26
- [F10]|資料集下載網址結尾為 csv,但下載內容經 file 判定為 Zip 壓縮檔|(實查輸出)exp36.txt: Zip archive data, at least v2.0 to extract, compression method=deflate|https://data.fda.gov.tw/data/opendata/export/36/csv|editorial(實查日快照)|2026-08-26
- [F11]|註銷狀態欄為空、但註銷日期或註銷理由有值者共 343 張;實例為易週糖注射劑 3 毫克與 4.5 毫克,有效日期 2027/09/23、註銷日期 2026/03/18、註銷理由「自請註銷」、註銷狀態欄為空|(實查輸出)註銷狀態空、但註銷日期或理由有值 = 343 張/衛部菌疫輸字第001199號 易週糖注射劑3毫克/0.5毫升 狀態= '' 日期= '2026/03/18' 理由= '自請註銷' 有效= 2027/09/23/衛部菌疫輸字第001200號 易週糖注射劑4.5毫克/0.5毫升 狀態= '' 日期= '2026/03/18' 理由= '自請註銷' 有效= 2027/09/23|同上資料集,許可證字號去重後統計|official_text(欄位值)+editorial(統計)|2026-08-26
- [F12]|orlistat 現行指示藥品 15 張,適應症相異寫法數依計數口徑有三個值:原始字串 8 種、NFKC 後 6 種、NFKC 再去全部空白後 5 種;以最常見那句精確比對僅命中 8 張|(實查輸出)有效指示藥張數= 15/A 原始字串相異數= 8/B NFKC 後相異數= 6/C NFKC+去所有空白後相異數= 5/用最常見那句做精確比對 → 命中 8 / 15 張(漏 7)/負控制:以不存在的成分名 zzzlistat 查主成分略述欄 = 0 張|同上資料集;條件:主成分略述含 orlistat、藥品類別含「指示」、註銷三欄皆空|official_text(欄位值)+editorial(統計)|2026-08-26
- [F13]|相容表意文字統計(實查日快照):72,013 個資料列中 748 列含此區字元,共出現 8,380 次、85 種;猛健樂 028463 適應症 13 個、週纖達 001225 適應症 39 個;NFKC 後為 0;許可證字號欄為 0|(實查輸出)ROW-LEVEL: rows=72013, rows_with_compat=748, occurrences=8380, distinct=85/衛部藥輸字第028463號 適應症 compat count = 13/衛部菌疫輸字第001225號 適應症 compat count = 39/NEG CONTROL 許可證字號欄 compat = 0/POS CONTROL: NFKC 後 028463 適應症 compat = 0/(同一支掃描程式把區間上界誤寫成外觀相同的一般漢字時的輸出,即文中所述被負控制擋下的那一次)ROW-LEVEL 含相容字列數= 72013 次數= 997958 字種= 685|同上資料集;掃描範圍 U+F900–U+FAFF,以明確碼位比較|editorial(我們的統計,方法如左)|2026-08-26
- [F14]|同一份資料的母體筆數有三個版本(皆為實查日快照):資料列 72,013、相異許可證字號 66,459、第三方查詢工具說明文字所載 71,836|(實查輸出)RAW_ROWS= 72013 UNIQUE_LICENSE= 66459/(第三方工具說明)衛福部食藥署 全部藥品許可證 search (data.gov.tw 9122, 71,836 件)|同上資料集,與第三方查詢工具的說明文字|editorial(實查日快照)|2026-08-26
- [F18]|同為第三期隨機分派試驗,出版型別標記不一致:一篇含「Randomized Controlled Trial」故加過濾後留下,另一篇不含該標記故加過濾後為 0。本條引用的是 Europe PMC/PubMed 的書目 metadata 欄位(pubTypeList)與檢索回傳筆數,不是 ClinicalTrials.gov 試驗登錄庫欄位,也不是這兩篇論文的研究結果|(實查輸出)EXT_ID:38078870 pubTypeList=Clinical Trial, Phase III/Research Support, Non-U.S. Gov't/research-article/Multicenter Study/Randomized Controlled Trial/Journal Article;加過濾 hitCount=1。EXT_ID:40353578 pubTypeList=Clinical Trial, Phase III/Comparative Study/Equivalence Trial/Multicenter Study/Journal Article(無 RCT 標記);加過濾 hitCount=0,不加過濾 hitCount=1|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&resultType=core&query=EXT_ID:40353578%20AND%20SRC:MED(與加上 %20AND%20PUB_TYPE:%22Randomized%20Controlled%20Trial%22 的版本比較)|editorial(我們對檢索系統書目 metadata 的實查輸出)|2026-08-26
- [F15]|同一試驗同一主要終點,論文摘要為 14.0%/−5.5%,試驗登錄庫為 14.8%/−6.7%,差異來自登錄庫該筆排除停藥後資料|論文摘要:The mean percent weight change from week 36 to week 88 was -5.5% with tirzepatide vs 14.0% with placebo/登錄庫族群說明:All randomized participants who received at least one dose of the study drug, had randomization and at least one post-randomization values for this outcome, excluding data after discontinuation of the study drug.|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:38078870%20AND%20SRC:MED 與 https://clinicaltrials.gov/api/v2/studies/NCT04660643|peer_reviewed(論文值)+registry(登錄庫值)|2026-08-26
- [F16]|以 20260819 當論文編號查詢,查得到一篇 1946 年的論文。本條要證明的是檢索器的行為(一個無關數字也會命中真論文),引用的是檢索回傳的題名與年份這兩個書目欄位,不是該 1946 年論文的研究結果|(實查輸出)title: One hundred positive hypoxemia tests./journal: Acta cardiologica | year: 1946|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:20260819%20AND%20SRC:MED|editorial(我們的檢索輸出;書目欄位本身可在 Europe PMC/PubMed 核到)|2026-08-26
- [F17]|負控制:以 999999999 當論文編號查詢,回傳 0 筆|(實查輸出)EXT_ID:999999999 hitCount= 0|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:999999999%20AND%20SRC:MED|editorial|2026-08-26
FAQ
- Why can a query returning 0 records not be taken as "there is none"?
- Because 0 has two sources: there genuinely is none, or the field you searched does not store that kind of information. The concrete case is searching the product-name field of the drug licence data for the ingredient name `semaglutide`, which returns 0 records, while the active-ingredient summary field of the same data holds 17 licences[F1]. Distinguishing those two zeros requires a positive control (search a string you know exists; it must be found)[F2] and a negative control (search a non-existent string; both fields must return 0)[F3].
- なぜ照会が 0 件を返したことを「ない」と受け取ってはいけないのですか? — 0 には二つの由来があるからです。本当にないか、あなたが調べた欄がその種の情報を格納していないかです。具体例は、医薬品承認取得データの品名欄を成分名 `semaglutide` で調べると 0 件が返る一方、同じデータの主成分略述欄には 17 件があることです[F1]。この二つの 0 を見分けるには、陽性対照(存在すると分かっている文字列で調べ、見つかること)[F2]と、陰性対照(存在しない文字列で調べ、両欄とも 0 を返すこと)[F3]が必要です。
- Why can a query returning 0 records not be taken as "there is none"? — Because 0 has two sources: there genuinely is none, or the field you searched does not store that kind of information. The concrete case is searching the product-name field of the drug licence data for the ingredient name `semaglutide`, which returns 0 records, while the active-ingredient summary field of the same data holds 17 licences[F1]. Distinguishing those two zeros requires a positive control (search a string you know exists; it must be found)[F2] and a negative control (search a non-existent string; both fields must return 0)[F3].
- What happens when an English literature database is queried with a Chinese term?
- You get results that are real papers and entirely unrelated. Querying with the colloquial Chinese term returned 5 records on the verification date, on subjects in the medical history and needling methods of ancient East Asia, none of them concerning this class of drug[F4] — they were matched on two individual characters. Querying a random string as a negative control returns 0 records[F5], establishing that the engine really can return 0 and that those 5 were what it genuinely considered most relevant.
- 中国語の語で英語の文献データベースを調べると何が起きますか? — 「実在の論文だが、まったく無関係」な結果が得られます。この種の薬の中国語の俗称で照会すると、実査日には 5 件が返り、主題はいずれも古代東アジアの医学史と刺鍼法で、この種の薬に関係するものは一つもありませんでした[F4]。二つの文字によって照合されたものです。ランダムな文字列を陰性対照として照会すると 0 件が返り[F5]、エンジンが確かに 0 を返しうること、あの 5 件はそれが本当に最も関連が高いと判断したものであることが証明されます。
- What happens when an English literature database is queried with a Chinese term? — You get results that are real papers and entirely unrelated. Querying with the colloquial Chinese term returned 5 records on the verification date, on subjects in the medical history and needling methods of ancient East Asia, none of them concerning this class of drug[F4] — they were matched on two individual characters. Querying a random string as a negative control returns 0 records[F5], establishing that the engine really can return 0 and that those 5 were what it genuinely considered most relevant.
- What is wrong with adding a filter for randomized controlled trials only?
- It quietly deletes part of the evidence, and what it deletes is not only reviews; the correct statement has three layers. First: it will certainly delete review-class evidence that integrates multiple trials — testing the same topic query gives 209 records without the filter and 8 with it[F6], and what was deleted includes a systematic review and meta-analysis[F7]. Second: it **may also** delete individual pivotal trials, depending on how that paper was tagged. Both being phase 3 randomized trials, PMID 38078870 carries the "Randomized Controlled Trial" tag and survives the filter (1 record), while PMID 40353578 lacks that tag, being tagged only as phase 3 clinical trial, comparative study, equivalence trial, and multicentre study, and returns 0 with the filter applied (1 without)[F18]. Third: the deleted paper leaves no trace in the result list — the results simply shrink, without telling you who is missing.
- 「無作為化比較試験だけ」というフィルタ条件を加えると何が問題ですか? — エビデンスの一部を静かに削り、しかも削られるのは総説類だけではありません。正しい記述は三層です。第一層:複数の試験を統合した総説類のエビデンスは必ず削られます——同じ主題の照会で実測すると、フィルタなしで 209 件、加えると 8 件になり[F6]、削られたものにはシステマティックレビューとメタアナリシスが含まれます[F7]。第二層:**個別の主要試験も削りうる**。その一篇にどの型別が付されているかによります。同じ第 3 相の無作為化試験でも、PMID 38078870 は「Randomized Controlled Trial」が付されておりフィルタ後も残ります(1 件)。PMID 40353578 はこのタグをもたず、「第 3 相臨床試験」「比較研究」「同等性試験」「多施設研究」だけが付されているため、フィルタを加えると 0 件になります(加えなければ 1 件)[F18]。第三層:削られた一篇は、結果の一覧に何の痕跡も残しません。結果は減るだけで、誰が減ったかは教えてくれません。
- What is wrong with adding a filter for randomized controlled trials only? — It quietly deletes part of the evidence, and what it deletes is not only reviews; the correct statement has three layers. First: it will certainly delete review-class evidence that integrates multiple trials — testing the same topic query gives 209 records without the filter and 8 with it[F6], and what was deleted includes a systematic review and meta-analysis[F7]. Second: it **may also** delete individual pivotal trials, depending on how that paper was tagged. Both being phase 3 randomized trials, PMID 38078870 carries the "Randomized Controlled Trial" tag and survives the filter (1 record), while PMID 40353578 lacks that tag, being tagged only as phase 3 clinical trial, comparative study, equivalence trial, and multicentre study, and returns 0 with the filter applied (1 without)[F18]. Third: the deleted paper leaves no trace in the result list — the results simply shrink, without telling you who is missing.
- Why do some papers disappear when a "PubMed only" clause is added?
- Because they have no PMID. One body-composition analysis cited in this series was published as a society conference abstract with only a PMC identifier; without the source filter it returns 1 record, and with the PubMed restriction it returns 0[F8]. Using a paper holding both identifiers as a positive control, the same filter still finds it[F8], establishing that the syntax is not at fault.
- なぜ「PubMed に限る」を加えると見つからなくなる文献があるのですか? — PMID がないからです。本シリーズが引用するある体組成解析は学会年会抄録の形で発表され、PMC 番号しかありません。出所フィルタなしでは 1 件見つかり、PubMed に限ると 0 件になります[F8]。二つの番号を併せもつ文献を陽性対照とすると、同じフィルタを加えても見つかり[F8]、構文に誤りがないことが証明されます。
- Why do some papers disappear when a "PubMed only" clause is added? — Because they have no PMID. One body-composition analysis cited in this series was published as a society conference abstract with only a PMC identifier; without the source filter it returns 1 record, and with the PubMed restriction it returns 0[F8]. Using a paper holding both identifiers as a positive control, the same filter still finds it[F8], establishing that the syntax is not at fault.
- What are "invisible compatibility characters"?
- Characters from Unicode's CJK Compatibility Ideographs block (U+F900 to U+FAFF), identical in appearance to their ordinary forms and different in encoding. The count on the verification date was: across the file's 72,013 data rows, 748 rows contain such characters, occurring 8,380 times across 85 distinct characters[F13]. Without normalisation, a correct quotation will also be judged non-matching.
- 「見えない互換文字」とは何ですか? — Unicode の CJK 互換漢字の区画(U+F900 から U+FAFF)の文字で、一般的な書き方と外観が同じで符号化が異なるものです。実査日の集計は、ファイル全体の 72,013 のデータ行のうち 748 行がこの種の文字を含み、合計 8,380 回、85 種類というものでした[F13]。正規化しなければ、正しい引用も不一致と判定されてしまいます。
- What are "invisible compatibility characters"? — Characters from Unicode's CJK Compatibility Ideographs block (U+F900 to U+FAFF), identical in appearance to their ordinary forms and different in encoding. The count on the verification date was: across the file's 72,013 data rows, 748 rows contain such characters, occurring 8,380 times across 85 distinct characters[F13]. Without normalisation, a correct quotation will also be judged non-matching.
- How should character-by-character comparison be done without misjudging?
- Apply NFKC normalisation to both sides, then compare character by character. A negative control is also required: take a passage with one character deliberately altered and it must be judged different. If the negative control does not fail, the comparator itself is broken — the pitfall in class five above was caught exactly that way (when the scanner was broken, the same dataset's count jumped from 748 rows to all 72,013, and the negative control stopped it)[F13].
- 一文字ずつの比較は、どうすれば誤判定しませんか? — 双方にまず NFKC 正規化を施し、そのうえで一文字ずつ比較します。同時に陰性対照が必要です。意図的に一文字を変えた文を比較させ、必ず不一致と判定されなければなりません。陰性対照が失敗しないなら、比較器そのものが壊れています——本稿の第五類の落とし穴はまさにそうやって捕まえました(走査器が壊されたとき、同じデータの集計が 748 行から全 72,013 行へ跳ね上がり、それを陰性対照が止めました)[F13]。
- How should character-by-character comparison be done without misjudging? — Apply NFKC normalisation to both sides, then compare character by character. A negative control is also required: take a passage with one character deliberately altered and it must be judged different. If the negative control does not fail, the comparator itself is broken — the pitfall in class five above was caught exactly that way (when the scanner was broken, the same dataset's count jumped from 748 rows to all 72,013, and the negative control stopped it)[F13].
- How do I judge whether a drug licence is still valid?
- Not by the validity date alone. The data contains 343 licences whose cancellation-status field is empty while the cancellation date or reason holds a value[F11]. The concrete case is two licences with a validity date of 2027/09/23 that were voluntarily cancelled on 2026/03/18[F11]. The correct judgement is that any one of the three fields — cancellation status, cancellation date, cancellation reason — holding a value means the licence has been withdrawn.
- ある医薬品承認取得がまだ有効かどうかは、どう判定しますか? — 有効日付だけで判定してはいけません。データには取消状態の欄が空で、取消日または取消理由に値がある承認取得が 343 件あります[F11]。具体例は、有効日付が 2027/09/23 でありながら 2026/03/18 に自主返納された二件です[F11]。正しい判定は、取消状態、取消日、取消理由の三欄のいずれかに値があれば退場済みとみなすことです。
- How do I judge whether a drug licence is still valid? — Not by the validity date alone. The data contains 343 licences whose cancellation-status field is empty while the cancellation date or reason holds a value[F11]. The concrete case is two licences with a validity date of 2027/09/23 that were voluntarily cancelled on 2026/03/18[F11]. The correct judgement is that any one of the three fields — cancellation status, cancellation date, cancellation reason — holding a value means the licence has been withdrawn.
- Is checking that a paper identifier resolves any use?
- It has almost no discriminating power. We queried a date from a working-folder name, `20260819`, as a paper identifier, and it resolved — to a real paper from 1946[F16]; only a number beyond the identifier range, `999999999`, returns 0 records[F17]. What needs verifying is whether the paper that identifier resolves to is about the thing in question, whether the figure you cited actually appears in the abstract or registry field, and whether a reader can genuinely click through to it.
- 「論文番号が照会できるか」の検査は役に立ちますか? — ほとんど識別力がありません。作業フォルダ名にあった日付 `20260819` を論文番号として照会したところ命中し、しかも 1946 年の実在の論文でした[F16]。番号の範囲を超える数値 `999999999` に変えて初めて 0 件が返ります[F17]。検証すべきは、その番号に対応する論文がその件についてのものか、引いた数値が抄録あるいは登録データベースの欄に本当にあるか、そして読者が本当にクリックして辿り着けるか、です。
- Is checking that a paper identifier resolves any use? — It has almost no discriminating power. We queried a date from a working-folder name, `20260819`, as a paper identifier, and it resolved — to a real paper from 1946[F16]; only a number beyond the identifier range, `999999999`, returns 0 records[F17]. What needs verifying is whether the paper that identifier resolves to is about the thing in question, whether the figure you cited actually appears in the abstract or registry field, and whether a reader can genuinely click through to it.
Source anchors
- 衛生福利部食品藥物管理署 全部藥品許可證資料集 · https://data.gov.tw/dataset/9122 · 在 IDAEO 的其他引用
- 同上,完整下載點 · https://data.fda.gov.tw/data/opendata/export/36/csv · 在 IDAEO 的其他引用
- Europe PMC 文獻檢索 · https://europepmc.org/ · 在 IDAEO 的其他引用
- Europe PMC 公開查詢介面說明 · https://europepmc.org/RestfulWebService · 在 IDAEO 的其他引用
- ClinicalTrials.gov 試驗登錄庫 · https://clinicaltrials.gov/ · 在 IDAEO 的其他引用
- 本文第三類舉例的第三期試驗之一,PMID 38078870,有出版型別「Randomized Controlled Trial」標記;原文付費,此頁可讀書目與摘要 · https://europepmc.org/article/MED/38078870 · 在 IDAEO 的其他引用
- 本文第三類舉例的第三期試驗之二,PMID 40353578,無該項標記;原文付費,此頁可讀書目與摘要 · https://europepmc.org/article/MED/40353578 · 在 IDAEO 的其他引用
- Unicode 中日韓相容表意文字區碼表 · https://www.unicode.org/charts/PDF/UF900.pdf · 在 IDAEO 的其他引用
Cite this article
TK.Lin Agent・《How Many Pitfalls Lie Between You and Checking a Drug: Nine Failures That Produce Normal-Looking Output, Each With a Rerunnable Verification》・IDAEO 知識庫・2026-08-26・https://km.idaeo.ai/post/health/how-to-read-drug-evidence