Phuket retrospective cohort
Rationale1In Phuket, a one-fifth-dose intradermal ChAdOx1 booster was given after two CoronaVac doses, and it needed comparison with the standard intramuscular dose.From IJID 2024, Abstract · IJID 2024, Methods, p. 2
- Method
2In a retrospective cohort, four record systems were linked through an encrypted national ID number.From IJID 2024, Data collection, p. 2 · Phuket_Vaccine Phuket Parquet.ipynb cell 4
3Of 156,574 records assessed, 18,310 were excluded, leaving 138,264.From IJID 2024, Fig 1, p. 4 · IJID 2024, Abstract; Sample size, p. 3
488,877 people received the intramuscular booster from 14 to 23 September 2021, and 49,387 the intradermal booster from 24 September to 3 October.From IJID 2024, Abstract; Methods p. 2 · Phuket_Vaccine Phuket Parquet.ipynb cell 3
5I placed both vaccination windows on Phuket's daily positive tests: they were ten days apart, both within the September 2021 peak of reported cases.From IJID 2024, Fig 2b, p. 5; Discussion, p. 6 · thailand-ve notebooks/phuket_infection.ipynb cell 31 · data/aggregates/phuket_incidence.json
- Findings
6Infections from day 14 to 31 December 2021 came to 25.90 per 1,000 person-years after the intramuscular dose and 24.04 after the intradermal dose.From IJID 2024, Table 2, p. 6 · Phuket_Vaccine transform/normalize/vaccine.py:165 · Phuket_Vaccine Phuket Parquet.ipynb cell 7
7I followed both groups from day 14: the share still uninfected fell to about 0.994 by day 85 with the intradermal dose and 0.993 by day 95 with the intramuscular dose, and the intradermal curve ran higher for about the first 40 days before the two converged.From IJID 2024, Fig 3a, p. 7; Results, p. 3 · Phuket_Vaccine Dhup-Cox Regression.ipynb cell 42 · data/aggregates/phuket_km.json
8I repeated the curves from day 21 and day 28 after the booster, and with 3-day or 1-day vaccination windows; none showed a statistically significant difference.From IJID 2024, Supplementary Figures 1 to 4 · IJID 2024, Discussion, p. 6 · data/aggregates/phuket_km.json
9After adjusting for demographic and clinical risk factors, I did not detect a statistically significant difference: HR 0.88, 95% CI 0.76 to 1.02, P = 0.09.From IJID 2024, Abstract; Table 2, p. 6 · Phuket_Vaccine Dhup-Cox Regression.ipynb cells 34-36
10In unadjusted analyses by sex, age and risk group, no stratum showed a clear difference; the male estimate sat at the boundary (P = 0.05).From IJID 2024, Table 2 univariate, p. 6 · IJID 2024, Results, p. 3 · Phuket_Vaccine Dhup-Cox Regression.ipynb cell 42
- Impact
11The Phuket study was published in the International Journal of Infectious Diseases in 2024, with me as last and corresponding author.From IJID 2024, title page, p. 1 · DOI 10.1016/j.ijid.2024.107179
Thailand matched case-control
Rationale12That was one province. I then studied the whole country, in a separate matched case-control study.From IJID 2024 abstract · Internal report, p. 14
13At The Gang Technology, I studied how COVID-19 vaccination related to the odds of severe disease across Thailand.From Internal report, Objective, p. 5 · Internal report, letterhead, p. 1
14Four national databases held the pieces: test results, immunization history, hospital severity and deaths. Different departments kept them for different purposes on a single server with limited resources for data this large, and the Department of Disease Control had proposed a more efficient way to manage and analyse them.From Internal report, Introduction and Data Preparation, pp. 5-6 · ve_report_1.docx draft, Background · Attachment D, User Training 1, slide 2
- Method
15Joined on an encrypted national ID, they gave more than 15 million records from January 2020 to December 2022.From Internal report, Abstract p. 4; Results p. 14 · Internal report, cid_md5 join, p. 6 · vaccine-efficacy sql/dms_coward.sql:87
16A case was a first infection that turned severe within 30 days; a control was any tested person with no earlier infection who did not turn severe.From Internal report, case and control definition, p. 9 · thailand-ve configs/CaseControl_config_01.yaml:8-9 · vaccine-efficacy normalize/coward.py:6-23
- Matching
17The matching was custom code. It took one calendar month of tests at a time and split it by sex, then by testing reason: suspected case (PUI), close contact or other.From Internal report, Fig 1.3 p. 11; Table 1.3 p. 10 · thailand-ve src/thailand_ve/pipeline/preprocess.py:41-50 · thailand-ve src/thailand_ve/pipeline/matcher.py:171-191
18Each branch was split again by exact age, so a case could only meet controls of its own month, sex, testing reason and age.From thailand-ve configs/CaseControl_config_01.yaml:10 · thailand-ve src/thailand_ve/pipeline/matcher.py:115-119 · thailand-ve src/thailand_ve/pipeline/utils.py:20-36
19Each case then drew four controls from its own bucket.From thailand-ve src/thailand_ve/pipeline/matcher.py:90 · thailand-ve src/thailand_ve/pipeline/const.py:57-60 · Internal report, Matched Case-Control, p. 11
20A case with no control in its bucket that month, or with a missing sex, testing reason or age, was dropped.From thailand-ve src/thailand_ve/pipeline/matcher.py:86-88 · thailand-ve src/thailand_ve/pipeline/matcher.py:111-114 · Internal report, Matched Case-Control, p. 11
21Each case and its four controls formed one matched set, and conditional logistic regression compared vaccination only within each set.From thailand-ve src/thailand_ve/pipeline/matcher.py:91-99 · thailand-ve src/thailand_ve/pipeline/fitter.py:52-58 · Internal report, Data Analysis, p. 12
- Method
22That gave 26,827 cases and 107,308 control records. The pipeline shipped with configuration files, and Department of Disease Control staff were trained to rerun it.From Internal report, Table 3.1, p. 14 · thailand-ve configs/*.yaml; src/thailand_ve/main.py:98-111 · Attachment D, User Training 3, 14 Mar 2023
- Findings
23Unadjusted odds ratios from conditional logistic regression fell with every dose: 0.70 after one, 0.34 after two, 0.14 after three, 0.07 after four and 0.05 after five.From Internal report, Table A.2, p. 38 · thailand-ve src/thailand_ve/pipeline/fitter.py:55-58 · thailand-ve src/thailand_ve/pipeline/fitter.py:138-149
24When I split by month and adjusted for risk group, the dose pattern shifted between variant waves: in July 2021, early in the Delta wave, odds ratios were 0.58 after one dose and 0.26 after two; in March 2022, early in Omicron, they were 1.22, 0.56, 0.17 and about 0.1 after one to four doses.From Internal report, Tables A.16 and A.17, pp. 63-64 · Internal report, By Year-Month, p. 28 · thailand-ve src/thailand_ve/pipeline/stratifier.py:74-82
25Unadjusted odds of severe disease were lowest one to two months after the latest dose, with odds ratios of 0.34 and 0.33, and rose unevenly toward 1 by month 10.From Internal report, Table A.3, p. 39 · Internal report, Univariate Results, p. 17
- Impact
26The Ministry of Public Health used these vaccine-effectiveness reports in its national booster-policy work.From dhupbh.com /industry
COVID-19 vaccine effectiveness
Two studies: a Phuket cohort comparing two booster routes, and a national matched case-control study of severe COVID-19.