This commit is contained in:
2026-06-23 16:38:56 +02:00
parent d1422d9038
commit fc29255715
8 changed files with 791 additions and 9 deletions
@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
# =============================================================================
# Nazev: promote_sipiq_submitted_v1.0.py
# Verze: 1.0
# Datum: 2026-06-17
# Popis: Posune dane investigatory (KROK 6 - SIPIQ odeslan) na
# KROK "7 - SIPIQ vyplneny" na zaklade Illuminator exportu
# (status "SIPIQ Submitted"). Illuminator = ultimatni zdroj, protoze
# lekar vyplneni SIPIQ nemusi oznamit e-mailem. Predřadi radek do STATUS.
# Pouziti: python promote_sipiq_submitted_v1.0.py (dry-run)
# python promote_sipiq_submitted_v1.0.py --apply
# =============================================================================
import sys
from pymongo import MongoClient
from bson import ObjectId
MONGO_URI = "mongodb://192.168.1.76:27017"
LINE = ("17JUN2026: SIPIQ VYPLNENY — dle Illuminator exportu (status „SIPIQ "
"Submitted“); lekar vyplneni neoznamil, Illuminator = ultimatni zdroj. KROK 7.")
# 13 investigatoru se SIPIQ Submitted v Illuminatoru, v Mongo zatim KROK 6
IDS = [
("6a19832b5fc2213518257969", "Durina Juraj"),
("6a19832b5fc221351825796e", "Falc Matej"),
("6a19832b5fc2213518257954", "Fedurco Miroslav"),
("6a19832b5fc221351825796c", "Gregar Jan"),
("6a19832b5fc221351825794f", "Hlavaty Tibor"),
("6a19832b5fc2213518257973", "Horvath Frantisek"),
("6a19832b5fc221351825796f", "Konecny Michal"),
("6a19832b5fc2213518257972", "Konecny Stefan"),
("6a1c4275aa46d8b608065cec", "Lukac Ludovit"),
("6a19832b5fc2213518257958", "Mihalkanin Lubomir"),
("6a198b661218c31ab0f5ba41", "Pesta Martin"),
("6a19832b5fc221351825795e", "Stepek David"),
("6a198b661218c31ab0f5ba43", "Tichy Michal"),
]
def main():
apply = "--apply" in sys.argv
col = MongoClient(MONGO_URI)["feasibility"]["investigators"]
n = 0
for hid, label in IDS:
oid = ObjectId(hid)
d = col.find_one({"_id": oid}, {"STATUS": 1, "KROK": 1})
if not d:
print(f" !! {label}: NENALEZEN"); continue
krok = d.get("KROK", "")
if not krok.startswith("6"):
print(f" ~~ {label}: KROK={krok} (neni 6) -> preskakuji"); continue
print(f" [{label}] KROK {krok} -> 7 - SIPIQ vyplneny")
if apply:
new_status = LINE + "\n" + (d.get("STATUS", "") or "")
col.update_one({"_id": oid}, {"$set": {
"KROK": "7 - SIPIQ vyplneny", "STATUS": new_status}})
n += 1
print(f"\n{'ZAPSANO' if apply else 'DRY-RUN'}: {n if apply else len(IDS)}/{len(IDS)}")
if not apply:
print(">>> Pro zapis spust s --apply")
if __name__ == "__main__":
main()
Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
# =============================================================================
# Nazev: promote_sipiq_submitted_v1.1.py
# Verze: 1.1
# Datum: 2026-06-20
# Popis: Posune investigatory z KROK "6 - SIPIQ odeslan" na "7 - SIPIQ vyplneny"
# AUTOMATICKY podle pritomnosti odpovedi v sipiq_responses
# (investigator_oid == _id; pole je ObjectId). Predřadi radek do STATUS.
# v1.0 melo napevno zadany seznam ID z Illuminator exportu (17JUN) -> TRASH.
# Pouziti: python promote_sipiq_submitted_v1.1.py (dry-run)
# python promote_sipiq_submitted_v1.1.py --apply
# Pozn.: Povysuje JEN z KROK 6 (KROK 0/3.2 se SIPIQ odpovedi necha byt -> reportuje
# jako upozorneni, rozhodne uzivatel).
# =============================================================================
import sys
from datetime import date
from pymongo import MongoClient
MONGO_URI = "mongodb://192.168.1.76:27017"
MON = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]
_t = date.today()
DD = _t.strftime("%d") + MON[_t.month - 1] + _t.strftime("%Y")
LINE = (f"{DD}: SIPIQ VYPLNENY — odpoved zaznamenana v sipiq_responses (import). KROK 7.")
def main():
apply = "--apply" in sys.argv
db = MongoClient(MONGO_URI)["feasibility"]
col = db["investigators"]
resp_oids = {r.get("investigator_oid") for r in db["sipiq_responses"].find({}, {"investigator_oid": 1})}
to_promote = [] # KROK 6 se odpovedi
anomalie = [] # ma odpoved, ale neni KROK 6 ani 7
for oid in resp_oids:
d = col.find_one({"_id": oid}, {"prijmeni": 1, "jmeno": 1, "KROK": 1, "STATUS": 1})
if not d:
continue
krok = str(d.get("KROK", "") or "")
label = f"{d.get('prijmeni')} {d.get('jmeno')}"
if krok.startswith("6"):
to_promote.append((d, label))
elif not krok.startswith("7"):
anomalie.append((label, krok))
print(f"== K POVYSENI (KROK 6 -> 7): {len(to_promote)} ==")
for d, label in sorted(to_promote, key=lambda x: x[1]):
print(f" [{label}] {d.get('KROK')} -> 7 - SIPIQ vyplneny")
if apply:
new_status = LINE + "\n" + (d.get("STATUS", "") or "")
col.update_one({"_id": d["_id"]}, {"$set": {
"KROK": "7 - SIPIQ vyplneny", "STATUS": new_status}})
if anomalie:
print(f"\n== UPOZORNENI: ma SIPIQ odpoved, ale NENI KROK 6 ani 7 (NEMENIM): {len(anomalie)} ==")
for label, krok in sorted(anomalie):
print(f" {label} [{krok}]")
print(f"\n{'ZAPSANO' if apply else 'DRY-RUN'}: {len(to_promote)} povyseno" + ("" if apply else " (spust s --apply)"))
if __name__ == "__main__":
main()
+2 -2
View File
@@ -95,7 +95,7 @@ def main():
today_cz = f"{today.day}. {CZ_MON[today.month]} {today.year}"
print(f" {d.get('jmeno')} {d['prijmeni']} | To: {to} | Cc: {CC}")
print(f" Link: {args.link}")
print(f" KROK: {d.get('KROK')} -> 6 - SIPIQ odeslán")
print(f" KROK: {d.get('KROK')} -> 6 - SIPIQ odeslan")
if not args.apply:
print("\n[DRY-RUN] nic nezapsáno. Ostrý: --apply"); return
@@ -121,7 +121,7 @@ def main():
new_line = (f"{DD}: SIPIQ ROZESLÁN — odkaz specifický pro centrum zaslán lékaři "
f"(.eml draft {fn}, Cc koordinátorky). KROK 6.")
db.investigators.update_one({"_id": d["_id"]}, {"$set": {
"KROK": "6 - SIPIQ odeslán",
"KROK": "6 - SIPIQ odeslan",
"STATUS": new_line + "\n" + old_status,
"sipiq.link": args.link,
"sipiq.odeslano": today_cz,
+7 -7
View File
@@ -26,16 +26,16 @@ from bson import ObjectId
MONGO_URI = "mongodb://192.168.1.76:27017"
DBN, COL = "feasibility", "investigators"
DATE = "19JUN2026"
DATE = "23JUN2026"
# (investigator _id, seaweed_url, filename, sha256, size, source_msg_id, label)
MAPPING = [
("6a268cdeb84bf5597759b478",
"http://192.168.1.50:8888/mail-attachments/b5/c8/b5c8677c335f77e2b3184aca71628393bf30bd843334edfdecd32b544e91882d",
"CZ_CDA PI_MUDr. Stanislav Reif_ICO_fully signed_18Jun2026.pdf",
"b5c8677c335f77e2b3184aca71628393bf30bd843334edfdecd32b544e91882d",
476306, "<CH2PR07MB7190C02CBCFF82E500D792B980E32@CH2PR07MB7190.namprd07.prod.outlook.com>",
"Reif Stanislav"),
("6a1987481218c31ab0f5ba34",
"http://192.168.1.50:8888/mail-attachments/78/84/7884dc83397fc7ece5905b6db81052fcf88bae05e19fe9501725ef5f1d406f04",
"CZ_CDA PI_MUDr.Mináriková,Ph.D._fully signed_22Jun2026.pdf",
"7884dc83397fc7ece5905b6db81052fcf88bae05e19fe9501725ef5f1d406f04",
460117, "<CH2PR07MB7190E9DB28249DF31195D21380EE2@CH2PR07MB7190.namprd07.prod.outlook.com>",
"Minarikova Petra"),
]