Stenogram Sejmu · 2026-09-16

Katarzyna Anna Kacperczyk

Kadencja 10 · posiedzenie 65 · wypowiedź 271

Brak głosu imiennego z tego dnia, który potwierdzałby klub mówcy.

Pełna wypowiedź

10. kadencja, 65. posiedzenie, 2. dzień (16-09-2026) 15. punkt porządku dziennego: Sprawozdanie Komisji Zdrowia o rządowym projekcie ustawy o zmianie ustawy - Prawo farmaceutyczne (druki nr 3002 i 3020). Podsekretarz Stanu w Ministerstwie Zdrowia Katarzyna Anna Kacperczyk: Szanowna Pani Marszałek! Szanowne Panie Posłanki! Panowie Posłowie! Bardzo dziękuję za dzisiejszą debatę, państwa głosy i pytania, które się pojawiły. Tak naprawdę, drodzy państwo, do części z tych kwestii odnosimy się na bieżąco w interpelacjach, które państwo do nas zgłaszacie. Ale oczywiście przekażemy informacje na piśmie, szczególnie w tych sprawach, które dotyczą szerszego funkcjonowania rynku aptecznego, o którym mówiła również pani posłanka Niemczyk. Bardzo za to dziękuję, o tym też piszemy, ale oczywiście przekażemy ponownie tę informację na piśmie. Drodzy Państwo! Chcę przede wszystkim przedstawić informację prostującą. Wiele dzisiaj słyszeliśmy o liberalizacji rynku aptecznego, o zniesieniu zakazu reklamy aptek. Myślę, że warto uświadomić sobie, a także powiedzieć wprost o tym, w jakiej sytuacji obecnie jesteśmy. W ubiegłym roku zapadł wyrok Europejskiego Trybunału Sprawiedliwości, w którym TSUE uznał obowiązujący w Polsce od 2012 r. całkowity zakaz reklamy aptek za niezgodny z dyrektywą dotyczącą handlu elektronicznego, w szczególności z jej art. 8 dotyczącym informowania i reklamy w zakresie zawodów regulowanych, a w konsekwencji naruszenia swobód traktatowych. W grudniu wydane zostało w tej sprawie orzeczenie Naczelnego Sądu Administracyjnego i od tego czasu zapadają wyroki, które nie tylko uniemożliwiają nakładanie kar za naruszenie całkowitego zakazu aptek, ale także wzywają głównego inspektora farmaceutycznego do zwrotu kar nałożonych w okresie od 2012 r. A zatem, drodzy państwo, nie mamy dzisiaj w Polsce żadnych zasad ani żadnego zakazu reklamy aptek, bo funkcjonujemy w rzeczywistości, w której ten przepis jest martwy. Przepis istnieje, ale nie jest obwarowany absolutnie żadną sankcją. Myślę, że musimy sobie jasno powiedzieć, że nie mamy dzisiaj w Polsce takiej sytuacji, w której mamy zakaz, a obecnie liberalizujemy rynek reklamy aptek w Polsce. Mamy de facto ten rynek zliberalizowany, ponieważ istniejący przepis nie jest, jak wspomniałam, obwarowany żadną sankcją. Co chcemy teraz zrobić? Absolutnie zgadzam się z paniami posłankami i panami posłami, którzy powiedzieli, że apteka jest szczególnym rodzajem podmiotu, który świadczy usługi dla ludności, więc zgodnie z regulacjami unijnymi reklama, marketing mają prawo być w szczególny sposób uregulowane, tak żeby nie została ograniczona swoboda przedsiębiorczości, a z drugiej strony by zostały uwzględnione kwestie dotyczące zdrowia publicznego, bezpieczeństwa pacjentów, bezpieczeństwa systemu ochrony zdrowia, niezależności zawodów medycznych. Myślę, że mamy świadomość tego, że tak naprawdę dzisiaj w przestrzeni wolno nam wszystko, musimy natomiast dokonać ograniczeń z myślą m.in. o pacjentach. Taki był cel tej zmiany. Padły pytania o to, dlaczego tak się spieszymy, dlaczego realizacja została podjęta teraz. Drodzy państwo, wyrok zapadł w lipcu ubiegłego roku, a więc tak naprawdę już od roku funkcjonujemy w rzeczywistości, w której nie mamy żadnych regulacji, jeżeli chodzi o rynek aptek. Dlatego ta sprawa jest tak pilna, Wynika ona również z troski o bezpieczeństwo pacjentów. Konsultacje trwały długo. Ministerstwo wypracowało trudny kompromis, ale wydaje nam się, że satysfakcjonował on cały rynek. Oczywiście, tak jak deklarowaliśmy w Komisji Zdrowia przy okazji pierwszego pytania, jesteśmy otwarci na dodatkową debatę. Natomiast podkreślamy, że wszelkie poprawki, które będą przyjmowane, będziemy oceniać i oceniamy pod względem zgodności z wyrokiem Trybunału Sprawiedliwości Unii Europejskiej. Drodzy Państwo! Dużo słyszeliśmy dzisiaj o kwestiach związanych z reklamą, agresywną reklamą, marketingiem, oferowaniem korzyści w zamian za zakup leku czy innego produktu, wyrobu medycznego. Słyszeliśmy już o różnych patelniach, o czymś, z czym mieliśmy do czynienia kilkadziesiąt lat temu, 20 lat temu. Drodzy państwo, projekt przygotowany przez Ministerstwo Zdrowia nie zezwala na takie praktyki. Zgodnie z treścią pkt 1 reklama nie może polegać na oferowaniu w sposób pośredni lub bezpośredni jakiejkolwiek korzyści w zamian za nabycie asortymentu dostępnego w aptece lub punkcie aptecznym lub skorzystanie ze świadczonych w nich usług. Myślę, że niezrozumienie może dotyczyć szczegółowych zapisów projektu, natomiast nie ma możliwości oferowania agresywnego marketingu, agresywnej promocji i agresywnej reklamy, o której dzisiaj państwo tutaj mówiliście. Jeżeli państwo przeczytają te wszystkie punkty, to zauważą, że odnosimy się też do reklamy porównawczej, którą mamy zdefiniowaną w ustawie o zwalczaniu nieuczciwej konkurencji. Nie może być ona kierowana do dzieci ani wykorzystywać wizerunku dzieci. Nie może też wykorzystywać wizerunku lub głosu osób znanych publicznie, osób posiadających wykształcenie medyczne. Ważne jest też to, że odnosimy się nie tylko do kwestii wizerunku kogoś, kto podszywa się pod osobę posiadającą wykształcenie medyczne, ale również zawarliśmy w ustawie regulację, która zabezpiecza tworzenie cyfrowych wizerunków sugerujących, że dana osoba jest lekarzem albo osobą, która ma wykształcenie medyczne. Dziękuję za otwartość wszystkich posłów. Jutro, jak rozumiem, odbędzie się dyskusja w Komisji Zdrowia. Zachęcam wszystkich do konstruktywnego podejścia. Uważamy, że Sejm jest miejscem, w którym powinniśmy dyskutować o dobrym prawie. Żadne ministerstwo, a w szczególności Ministerstwo Zdrowia, nie ma monopolu na wiedzę, dlatego zawsze byliśmy i wciąż jesteśmy otwarci na sugestie. Pragnę jednak państwa uczulić, po pierwsze, na to, w jakiej sytuacji dzisiaj jesteśmy. Nie mamy zasad dotyczących reklamy aptek, a chcemy ją doregulować, żeby była bezpieczna dla pacjentów. Po drugie, w kontekście wszystkich zmian, poprawek i sugestii musimy mieć na względzie to, że ustawa, nad którą wspólnie procedujemy, ma za zadanie wdrożyć wyrok TSUE. A więc jest ona też przez nas oceniana pod kątem tego, na ile wypełnia wyrok Trybunału Sprawiedliwości Unii Europejskiej. Dodam, że analizując system apteczny, korzystaliśmy z rozwiązań, które obowiązują w innych krajach unijnych. Rzeczywiście niektóre kraje mają bardziej liberalne podejście, inne mają mniej liberalne podejście, ale w żadnym kraju przez tak długi czas nie było ani do tej pory nie ma całkowitego zakazu reklamy aptek, co potwierdził też wyrok Trybunału Sprawiedliwości Unii Europejskiej. Serdecznie dziękuję za wszystkie głosy i za dzisiejszą debatę. Myślę, że jutro będziemy kontynuować dyskusję w tym duchu. Rzeczywiście w interesie chyba wszystkich z nas jest wspólne wypracowanie dobrych rozwiązań w trosce o pacjentów i bezpieczeństwo całego systemu ochrony zdrowia. Sejm jest miejscem, gdzie te dobre rozwiązania trzeba razem ze stroną rządową wypracowywać. Ponieważ padały tu pytania, skorzystam z tych 5 minut, które mi pozostały. Padały pytania o to, dlaczego koncentrujemy się na tej ustawie, skoro są inne ważne rzeczy, jeżeli chodzi o zawód farmaceuty czy funkcjonowanie rynku aptecznego, którymi powinniśmy się zajmować, nie mówiąc już o szerszym kontekście systemu ochrony zdrowia. Chciałabym państwu powiedzieć, że z panem dyrektorem Oczkowskim i całym jego zespołem bardzo głęboko przeanalizowaliśmy funkcjonowanie rynku aptecznego, ale też politykę lekową w całym tym łańcuchu od preskrypcji po sprzedaż. Proszę państwa, jesteśmy w procesie konsultacji publicznych ustawy o receptach, która po raz pierwszy będzie porządkować rynek recept, również z uwzględnieniem roli farmaceutów w systemie ochrony zdrowia. Chyba po raz pierwszy od ostatnich kilkunastu lat rzeczywiście ten temat będzie tak szeroko procedowany. Rozpoczynamy też dyskusję nad indywidualną opieką farmaceutyczną, opieką zawodową i nad tym, że to pozwoli wzmocnić rolę farmaceutów w systemie ochrony zdrowia. Mamy dobre doświadczenia dotyczące szczepień, chociażby ochronnych, które realizują farmaceuci. Korzystam więc z okazji i bardzo za to dziękuję, bo wyszczepialność rzeczywiście wzrosła. Myślę, że rzeczywiście farmaceuci ze swoimi kompetencjami zasługują na to, żeby należycie być wpisanymi w system ochrony zdrowia. Nad tym pracujemy i będziemy pracować. Drodzy Państwo! W polityce lekowej, której główne założenia przedstawialiśmy, jest też cały rozdział i cała część poświęcone rynkowi farmaceutycznemu i roli farmaceutów w polityce lekowej państwa. Myślę, że to jest dobry krok w stronę zaadresowania tych kwestii, o których państwo wspomnieliście. Powiem jeszcze, że w ramach działań deregulacyjnych rządu zostało przyjętych wiele zmian, które w pewnym stopniu ułatwiły obrót lekami albo usprawniły i odbiurokratyzowały ten proces. Oczywiście się nie zatrzymujemy, bo wiele rzeczy jest jeszcze do uregulowania. Chcemy jednak, żeby to było spójne z ustawą o receptach. Mogę też powiedzieć, że tak jak obiecywaliśmy, wprowadziliśmy automatyzm refundacyjny, co będzie ułatwiać możliwość dzielenia recept w aptekach - i co jest absolutną korzyścią dla pacjentów - a przede wszystkim w ostatnim czasie, czyli od 13 września - walidację recept. To rzeczywiście duża zmiana oczekiwana przez farmaceutów i cały rynek. Myślę, że pozwoli ona rzeczywiście uporządkować w części technicznej rynek recept. Natomiast kwestia wpisywania dawkowania przełoży się na bardziej bezpieczną farmakoterapię dla pacjentów, o czym dzisiaj panie posłanki i panowie posłowie dyskutowali. Tak jak powiedziałam, ten projekt ustawy jest jednym z elementów zmian, które wprowadza ministerstwo. Liczymy na dobrą współpracę z państwem przy procedowaniu nad kolejnymi zmianami, które będą porządkowały i regulowały rynek farmaceutyczny w Polsce i uwzględniały dodatkowe kompetencje i rolę farmaceutów w systemie ochrony zdrowia - bo przede wszystkim od tego powinnam zacząć - tak żebyśmy wspólnie mogli zapewnić większe bezpieczeństwo pacjentom. Dziękuję bardzo. (Oklaski) Przebieg posiedzenia

Otwórz zachowany oryginał · Źródło urzędowe

Dowód treści wypowiedzi

Dowód kolejności na liście dnia

Kontekst w stenogramie

  1. Wcześniej · wypowiedź 269 Jerzy Meysztowicz 10. kadencja, 65. posiedzenie, 2. dzień (16-09-2026) 15. punkt porządku dziennego: Sprawozdanie Komisji Zdrowia o rządowym projekcie ustawy o zmianie ustawy - Prawo farmaceutyczne (druki nr 3002 i 3020). Poseł Jerzy Meysztowicz: Pani Marsza
  2. Wcześniej · wypowiedź 270 Norbert Pietrykowski 10. kadencja, 65. posiedzenie, 2. dzień (16-09-2026) 15. punkt porządku dziennego: Sprawozdanie Komisji Zdrowia o rządowym projekcie ustawy o zmianie ustawy - Prawo farmaceutyczne (druki nr 3002 i 3020). Poseł Norbert Pietrykowski: Pani Mar
  3. Później · wypowiedź 272 Lidia Czechak 10. kadencja, 65. posiedzenie, 2. dzień (16-09-2026) 15. punkt porządku dziennego: Sprawozdanie Komisji Zdrowia o rządowym projekcie ustawy o zmianie ustawy - Prawo farmaceutyczne (druki nr 3002 i 3020). Poseł Lidia Czechak (tekst niewygłos
  4. Później · wypowiedź 273 Anna Gembicka 10. kadencja, 65. posiedzenie, 2. dzień (16-09-2026) 15. punkt porządku dziennego: Sprawozdanie Komisji Zdrowia o rządowym projekcie ustawy o zmianie ustawy - Prawo farmaceutyczne (druki nr 3002 i 3020). Poseł Anna Gembicka (tekst niewygłos
1. (2.99ms; exec 2.95 + fetch 0.05; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, d…
2. (1.49ms; exec 1.47 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
3. (0.73ms; exec 0.71 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2399 ORDER BY ordinal
4. (0.86ms; exec 0.84 + fetch 0.02; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcrip…
5. (1.03ms; exec 1.02 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
6. (0.87ms; exec 0.86 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
7. (0.57ms; exec 0.56 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2397 ORDER BY ordinal
8. (0.83ms; exec 0.81 + fetch 0.02; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
9. (0.71ms; exec 0.7 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
10. (0.55ms; exec 0.54 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2398 ORDER BY ordinal
11. (0.83ms; exec 0.83 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
12. (0.73ms; exec 0.72 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
13. (0.75ms; exec 0.74 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2400 ORDER BY ordinal
14. (0.78ms; exec 0.77 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
15. (0.8ms; exec 0.79 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
16. (0.58ms; exec 0.56 + fetch 0.03; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2401 ORDER BY ordinal
17. (1.69ms; exec 1.68 + fetch 0.01; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_vote…
toggle
1. (2.99ms; exec 2.95 + fetch 0.05; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 10204 LIMIT 1
2. (1.49ms; exec 1.47 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 9154 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
3. (0.73ms; exec 0.71 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2399 ORDER BY ordinal
4. (0.86ms; exec 0.84 + fetch 0.02; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcript_day_statements dayStatement JOIN sejm_statements statement ON statement.object_id = dayStatement.statement_id WHERE dayStatement.day_id = 9932 AND dayStatement.day_revision_id = 9482 AND dayStatement.ordinal BETWEEN 269 AND 273 AND statement.object_id <> 10204 ORDER BY dayStatement.ordinal
5. (1.03ms; exec 1.02 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 9932 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 269) LIMIT 1
6. (0.87ms; exec 0.86 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 9152 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
7. (0.57ms; exec 0.56 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2397 ORDER BY ordinal
8. (0.83ms; exec 0.81 + fetch 0.02; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 9932 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 270) LIMIT 1
9. (0.71ms; exec 0.7 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 9153 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
10. (0.55ms; exec 0.54 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2398 ORDER BY ordinal
11. (0.83ms; exec 0.83 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 9932 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 272) LIMIT 1
12. (0.73ms; exec 0.72 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 9155 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
13. (0.75ms; exec 0.74 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2400 ORDER BY ordinal
14. (0.78ms; exec 0.77 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 9932 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 273) LIMIT 1
15. (0.8ms; exec 0.79 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 9156 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
16. (0.58ms; exec 0.56 + fetch 0.03; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2401 ORDER BY ordinal
17. (1.69ms; exec 1.68 + fetch 0.01; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 65 AND individual.mp_number = 0 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-09-16' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
Top slow:
2.99ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.objec…
1.69ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes indiv…
1.49ms SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run …
toggle
2.99ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 10204 LIMIT 1
1.69ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 65 AND individual.mp_number = 0 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-09-16' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
1.49ms SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 9154 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
N+1 candidates:
5× (4.6ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing…
5× (3.18ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (3.47ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON versi…
toggle
5× (4.6ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = ? AND run.state = ? ORDER BY CASE extraction.quality_state WHEN ? THEN ? WHEN ? THEN ? ELSE ? END, run.finished_at DESC, extraction.id DESC LIMIT ?
5× (3.18ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (3.47ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = ? AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = ? AND document.document_kind = ? AND document.source_document_key = CONCAT(?, ?) LIMIT ?
PHP: 23.4ms | App: 23.2ms | DB: 16.8ms (17, rows: 19) [exec: 16.5ms, fetch: 0.2ms] | View: 0.2ms (1) | Mem: 2MB (peak: 2MB) | Files: 20
toggle files
(0.24ms) /app/templates/speeches/show.php
/app/public/index.php
/app/vendor/autoload.php
/app/vendor/composer/autoload_real.php
/app/vendor/composer/platform_check.php
/app/vendor/composer/ClassLoader.php
/app/vendor/composer/autoload_static.php
/app/vendor/symfony/deprecation-contracts/function.php
/app/vendor/symfony/polyfill-php83/bootstrap.php
/app/lib/PFrame.php
/app/config/credentials/local.php
/app/src/Http/PublicResponseCache.php
/app/src/Http/AuthRoutes.php
/app/src/Http/ReviewDecisionRoutes.php
/app/src/Http/TopicDecisionRoutes.php
/app/src/Http/WatchRoutes.php
/app/src/Http/SpeechController.php
/app/src/Overview/SpeechReadModel.php
/app/src/Text/TextSearch.php
/app/templates/layout.php