Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PES Endocrinology: question bank and study application

DOI

Chcesz po prostu wypróbować aplikację?

Otwórz aplikację w przeglądarce — nie wymaga instalacji ani logowania.

Albo pobierz plik i otwórz go podwójnym kliknięciem; działa również offline. Jeśli strona pobierania nie wyświetla pliku, wybierz ikonkę pobierania po prawej stronie.

Chcesz zrobić wersję dla swojej specjalizacji albo masz pytania? Skontaktuj się ze mną.

The application and the questions are in Polish. Documentation below is in English.


A cleaned, validated and topic-indexed database of 4920 questions from twenty-one years of the Polish State Specialty Examination (PES) in endocrinology: 41 sessions, spring 2006 to spring 2026, together with the pipeline that produced it and a study application built on top of it.

If you are… start here
preparing for the PES and want to study the app, no installation
a clinician or researcher wanting to reuse the data data/README.md, then docs/taxonomy.md
interested in how it was built docs/methodology.md, then src/

If you want to create your own database/app for your own specialty, or have questions, feel free to contact me.

The questions themselves are public information published by CEM and by the Naczelna Izba Lekarska. What this repository adds is everything needed to make them usable: recovery of the 2856 questions whose answer options had been destroyed in transit, reconstruction of 480 questions that existed only as scans, a 28-category topic index mapped to a standard textbook, and an audit trail showing what was verified and how.

Nothing here is clinical guidance. Questions date back to 2006 and reflect the state of practice at the time of each examination. See NOTICE.md.


The application

Widok pytania z parametrami psychometrycznymi

Where CEM published item analysis, each question shows difficulty, discrimination, the percentage of candidates choosing each option, and point-biserial correlation per option. The interface is in Polish, as is the source material.

Filtrowanie po sesjach i działach tematycznych

Filtering by any of the 41 sessions and 28 topic categories, with the question count for each. By default a category returns only questions for which it is the primary topic.

Tryb egzaminu z licznikiem czasu

Examination mode: 120 questions from a single session, a countdown timer, and no answer preview until the attempt is finished.


Why this exists

Preparing for a specialty examination from past exams is complicated. The questions are difficult to access or paywalled. Applications often lack useful features, have their own answers different than originally provided by CEM and often contain explanations with no information about who have written them or disclosure if they were generated by AI.

The requirement that drove the project: after reading a chapter of Interna Szczeklika, a user should be able to answer every question in the database belonging to that chapter. That is what made a topic taxonomy necessary and what set the accuracy bar for it. The application should make the studying experience better and should allow for a free, easy to run experience without any subscription fees or paywalls.


What is here

data/       the bank, its schema, the taxonomy, and psychometrics without question text
src/        the pipeline: extraction, OCR, tagging, quality assurance
docs/       methodology, taxonomy rationale, OCR validation, quality assurance
reports/    published output of the audits and the manual verification samples
app/        the study application, a single self-contained HTML file

Start with data/README.md for the data format, docs/methodology.md for how it was built, and app/pes-endo.html, which opens in a browser and needs nothing else.


The corpus

Sessions Questions Acquisition Item statistics
2006–2017 2880 web, CEM yes
2018–2020 720 text PDF, NIL release no
2021–2022 480 scans + OCR, NIL release no
2023–2026 840 web, CEM yes

3703 questions carry CEM's published item analysis: difficulty, discrimination, answer distribution and point-biserial correlation for each option. Twenty questions annulled by CEM are marked as such and carry no substituted key.

Every question carries one to three topic tags from a closed set of 28, inspired by chapters of Interna Szczeklika B01-IV.


Notable parts of the pipeline

Recovering destroyed answer options (2856 questions)

In the 2006–2017 material the answer options had been concatenated into the question text with no structural markers. They were recovered by locating A. through E. in ascending order, accepting a marker only where preceded by a sentence boundary. That rule prevents strings such as "prawdziwe są odpowiedzi A i C." inside an option from being read as a new option.

Verified by round-trip: reassembling question and options reproduced the original source text character-for-character for all 2880 questions.

Four-engine OCR consensus (480 questions)

The 2021–2022 scans carry no text layer. Text was recovered using Tesseract LSTM, Tesseract LSTM on a binarised and upscaled image, Tesseract's legacy engine, and Windows.Media.Ocr, then reconciled by vote.

Answer keys were read visually from the scans, never by OCR, because OCR reliably confused C with E and E with B in the key tables. 222 corrections were applied. The recurring failure classes are documented in docs/ocr-validation.md.

Topic tagging with independent validation

Weighted dictionary rules, matched diacritic-insensitively and on stems to handle Polish inflection, with a hit in the question stem weighted three times a hit in an answer option. Validated against an independent TF-IDF/k-NN classifier. Sampled error rate is on the order of 1–2%. See docs/taxonomy.md.

Verification by reconstruction

Internal consistency checks cannot detect an error that is internally consistent, so the final audit tried to rebuild the source files from the database instead. See reports/stress-test.txt and docs/quality-assurance.md.


Reproducing the pipeline

The source material is not redistributed here; obtain it from CEM and NIL as described in NOTICE.md, then:

export PES_SOURCES=/path/to/source/material
python src/extract/recover_options_2006_2017.py
python src/extract/parse_pdf_2018_2020.py
python src/ocr/run_ocr.py && python src/ocr/vote4.py
python src/tagging/finalize_tags.py
python src/qa/final_validation.py

Requires Python 3.10+, pdfplumber, and Tesseract with Polish language data for the OCR stage. Validation and audit scripts run against data/questions.json alone and need no source material.


Limitations

  • The 2021–2022 sessions are OCR-derived and carry a residual transcription risk despite consensus and manual review. Any remaining error is most likely to be there.
  • Topic tags are rule-derived, not hand-assigned. The estimated error rate is 1–2%.
  • Item statistics are unavailable for 1217 questions because CEM did not publish item analysis for the 2018–2022 sessions.
  • Ten questions contain two identical answer options. This is present in the source material, not introduced here.

Citing

See CITATION.cff.

Contributors and method

The division of labour, including the use of AI assistance in implementation, is stated in CONTRIBUTIONS.md.

Licence

Code, taxonomy, documentation and application: PolyForm Noncommercial 1.0.0 (see LICENSE). Any noncommercial purpose is permitted, including personal study, research, and use by educational, healthcare and government institutions. Examination questions: public information published by CEM; no rights claimed or granted. See NOTICE.md.

About

Validated, topic-indexed application and database of publically available 4920 questions from 41 sessions of the Polish PES endocrinology examination (2006–2026), with the pipeline that produced it and a browser-based study app. Includes CEM item statistics for 3703 questions and a 28-category topic index.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages