This commit is contained in:
2026-06-10 11:59:19 +02:00
parent a41f97b86b
commit 7b2f69ad85
275 changed files with 16726 additions and 0 deletions
@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
# =============================================================================
# Nazev: fix_email_podruhe_v1.0.py
# Verze: 1.0
# Datum: 2026-06-10
# Popis: U center v KROK 1, jejichz STATUS obsahuje "Email odeslán podruhé",
# nahradi tento text za "1. připomínka odeslaná" (= 2. email byl
# fakticky 1. pripominka). Po zapisu spustit classify_krok --apply
# (centra prejdou na KROK 2). Idempotentni.
# Pouziti: python fix_email_podruhe_v1.0.py (dry-run)
# python fix_email_podruhe_v1.0.py --apply (zapise)
# =============================================================================
import os
import sys
from pymongo import MongoClient
MONGO_URI = os.environ.get("MONGO_URI", "mongodb://192.168.1.76:27017")
OLD = "Email odeslán podruhé"
NEW = "1. připomínka odeslaná"
def main():
apply = "--apply" in sys.argv
client = MongoClient(MONGO_URI)
col = client["feasibility"]["investigators"]
docs = list(col.find(
{"KROK": {"$regex": "^1"}, "STATUS": {"$regex": "odeslán podruhé"}},
{"prijmeni": 1, "jmeno": 1, "STATUS": 1},
))
print(f"Nalezeno {len(docs)} center v KROK 1 s '{OLD}'.\n")
n = 0
for d in docs:
status = d.get("STATUS", "") or ""
new_status = status.replace(OLD, NEW)
if new_status == status:
print(f"[SKIP] {d.get('prijmeni')} {d.get('jmeno')}: text nenalezen")
continue
print(f"[OK] {d.get('prijmeni')} {d.get('jmeno')}:")
print(f" '{status.splitlines()[0]}' -> '{new_status.splitlines()[0]}'")
if apply:
res = col.update_one({"_id": d["_id"]}, {"$set": {"STATUS": new_status}})
n += res.modified_count
print()
if apply:
print(f">>> ZAPSANO: {n} zaznamu. Ted spust classify_krok_v1.0.py --apply")
else:
print(">>> DRY-RUN. Pro zapis spust s --apply")
if __name__ == "__main__":
main()
@@ -0,0 +1,39 @@
<!--
=============================================================================
Nazev: sipiq_email_template_v1.0.html
Verze: 1.0
Datum: 2026-06-10
Popis: Schvalena sablona SIPIQ feasibility e-mailu (studie 77242113UCO3002 / DAWN).
Pouziti pres MCP vbcz-email create_draft_eml.
Placeholdery (nahradit pred generovanim draftu):
{{LINK}} - jedinecny SIPIQ Qualtrics odkaz centra (z Trilium note "SIPIQ", noteId hAMNUnUQdCRn)
POZOR: v <a href="..."> musi byt & jako &amp;
{{DEADLINE}} - termin vyplneni, format DD-MON-YYYY (napr. 17-JUN-2026); pravidlo = den odeslani + 7 dni
Fixni parametry create_draft_eml:
to = adresa lekare (overit z realne korespondence v JNJ schrance vbuzalka@its.jnj.com)
cc = AKocourk@ITS.JNJ.com, EBartoso@its.jnj.com
subject = 77242113UCO3002/Feasibility dotaznik
add_signature = false (podpis je primo v tele nize)
from_addr = vychozi (vbuzalka@its.jnj.com; na JNJ PC se doplni automaticky)
output_dir = u:\Dropbox\!!!Days\Downloads Z230\UploadToJNJ
filename = sipiq_<prijmeni>_<DDMONYYYY>.eml
Po odeslani -> zapis do Mongo feasibility.investigators (per _id):
KROK = "6 - SIPIQ odeslan"
sipiq.link, sipiq.link_token (cast Q_DL), sipiq.link_stored_at, sipiq.link_source="Trilium SIPIQ note"
STATUS prepend: "<DDMONYYYY>: SIPIQ odeslan (deadline {{DEADLINE}}; <adresa>)"
Specialni pravidlo: Stepek -> posilat na OBA jeho e-maily.
=============================================================================
-->
<p>Dobrý den,</p>
<p>ve společnosti Johnson &amp; Johnson posuzujeme centra zvažovaná pro studie rané fáze vývoje. Prvním krokem je vyplnění dotazníku SIPIQ (Site Interest Protocol Information Questionnaire), díky kterému lépe porozumíme postupům, zásadám a možnostem vašeho centra.</p>
<p>Níže najdete odkaz na dotazník SIPIQ specifický pro Vaše centrum. Vyplněný dotazník prosím odešlete do <b>{{DEADLINE}}</b>.</p>
<p>Odkaz: <a href="{{LINK}}">{{LINK}}</a></p>
<p>Moc prosím vyplňte formulář pečlivě, neuvádějte ani příliš optimistická, ani příliš pesimistická čísla. Na konci dotazníku jsou dotazy na etickou komisi — tyto s přehledem ignorujte, protože situace stran etické komise je nám jasná; vše se podává v rámci centralizovaného EU podání, jehož součástí je i centrální etická komise příslušné země.</p>
<p>Naopak nás velice zajímá dotaz ke konci, jak dlouho odhadujete, že bude trvat vyjednávání smlouvy — uveďte to prosím na základě svých zkušeností z předchozích studií.</p>
<p>Po vyplnění bude následovat hodnoticí návštěva v centru a finální rozhodnutí o výběru centra.</p>
<p>V případě dotazů se na nás neváhejte obrátit.</p>
<p>S pozdravem,</p>
<p>MUDr. Vladimír BUZALKA<br>ICON plc<br>Performing Local Trial Management Services for Janssen Cilag s.r.o.<br>Global Clinical Operations<br>Mobile: +420 775 735 276<br>Fax: +420 227 012 284<br>E-mail: vbuzalka@its.jnj.com, vladimir.buzalka@iconplc.com</p>