diff --git a/Covance_UCO3001/3001Specimeninventoryreport_30c1e108.xlsx b/Covance_UCO3001/3001Specimeninventoryreport_30c1e108.xlsx new file mode 100644 index 0000000..bcc27c3 Binary files /dev/null and b/Covance_UCO3001/3001Specimeninventoryreport_30c1e108.xlsx differ diff --git a/Covance_UCO3001/Testing/create_visit_report.py b/Covance_UCO3001/Testing/create_visit_report.py new file mode 100644 index 0000000..67fc932 --- /dev/null +++ b/Covance_UCO3001/Testing/create_visit_report.py @@ -0,0 +1,83 @@ +import glob +import os +import pandas as pd +from openpyxl import Workbook +from openpyxl.styles import Font, PatternFill, Border, Side, Alignment +from openpyxl.utils import get_column_letter +from datetime import date, datetime + +src_dir = "/Covance_UCO3001/" +out_dir = "U:/Dropbox/!!!Days/Downloads Z230/" + +# Find source CSV +csv_files = glob.glob(src_dir + "_EDCStdRpt-DataListing.csv") +assert csv_files, "CSV file not found!" +csv_file = csv_files[0] +print(f"Source: {csv_file}") + +# Delete old report +today = date.today().strftime("%Y-%m-%d") +out_path = out_dir + f"{today} 77242113UCO3001 Visit report.xlsx" +for old in glob.glob(out_dir + "*77242113UCO3001 Visit report*.xlsx"): + os.remove(old) + print(f"Deleted old: {old}") + +# Load CSV +df = pd.read_csv(csv_file, encoding='utf-8') + +# Select and rename columns +result = df[['SiteNumber', 'Subject', 'InstanceName', 'Field4Value', 'Field5Value']].copy() +result.columns = ['Číslo centra', 'Číslo pacienta', 'Kód návštěvy', 'Datum návštěvy', 'Typ návštěvy'] + +# Parse date to real datetime +def parse_date(val): + if pd.isna(val) or val == '': + return None + try: + return datetime.strptime(str(val).strip(), '%d %b %Y') + except: + return None + +result['Datum návštěvy'] = result['Datum návštěvy'].apply(parse_date) + +# Sort: Číslo centra → Číslo pacienta → Datum návštěvy ascending +result = result.sort_values(['Číslo centra', 'Číslo pacienta', 'Datum návštěvy']).reset_index(drop=True) + +# Build workbook +wb = Workbook() +ws = wb.active +ws.title = "Přehled návštěv" + +thin = Side(style='thin') +border = Border(left=thin, right=thin, top=thin, bottom=thin) +header_fill = PatternFill("solid", fgColor="4472C4") +header_font = Font(name='Calibri', bold=True, size=11, color="FFFFFF") +data_font = Font(name='Calibri', size=11) + +col_widths = [20, 20, 20, 16, 16] + +# Header row +for col_idx, (col_name, width) in enumerate(zip(result.columns, col_widths), 1): + cell = ws.cell(row=1, column=col_idx, value=col_name) + cell.font = header_font + cell.fill = header_fill + cell.border = border + cell.alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) + ws.column_dimensions[get_column_letter(col_idx)].width = width + +ws.row_dimensions[1].height = 30 +ws.freeze_panes = "A2" + +# Data rows +for row_idx, row in enumerate(result.itertuples(index=False), 2): + for col_idx, value in enumerate(row, 1): + cell = ws.cell(row=row_idx, column=col_idx, value=value) + cell.font = data_font + cell.border = border + cell.alignment = Alignment(horizontal='center', vertical='center') + if col_idx == 4 and value is not None: # Datum návštěvy + cell.number_format = 'DD-MMM-YYYY' + +wb.save(out_path) +print(f"Saved: {out_path}") +print(f"Rows: {len(result)}") diff --git a/Covance_UCO3001/_EDCStdRpt-DataListing.csv b/Covance_UCO3001/_EDCStdRpt-DataListing.csv new file mode 100644 index 0000000..314e18b --- /dev/null +++ b/Covance_UCO3001/_EDCStdRpt-DataListing.csv @@ -0,0 +1,25 @@ +"SiteGroupName","SiteID","SiteNumber","Site","SubjectID","Subject","CRFVersionID","InstanceID","InstanceName","FolderSeq","Page","RecordID","RecordPosition","LastModifiedDate","Field1Value","Field1Label","Field2Value","Field2Label","Field3Value","Field3Label","Field4Value","Field4Label","Field5Value","Field5Label","Field6Value","Field6Label","Field7Value","Field7Label","Field8Value","Field8Label","Field9Value","Field9Label","Field10Value","Field10Label","Field11Value","Field11Label","Field12Value","Field12Label","Field13Value","Field13Label","Field14Value","Field14Label","Field15Value","Field15Label","Field16Value","Field16Label","Field17Value","Field17Label","Field18Value","Field18Label","Field19Value","Field19Label","Field20Value","Field20Label","Field21Value","Field21Label","Field22Value","Field22Label","Field23Value","Field23Label","Field24Value","Field24Label","Field25Value","Field25Label","Field26Value","Field26Label","Field27Value","Field27Label","Field28Value","Field28Label","Field29Value","Field29Label","Field30Value","Field30Label","Field31Value","Field31Label","Field32Value","Field32Label","Field33Value","Field33Label","Field34Value","Field34Label","Field35Value","Field35Label","Field36Value","Field36Label","Field37Value","Field37Label","Field38Value","Field38Label","Field39Value","Field39Label","Field40Value","Field40Label","Field41Value","Field41Label","Field42Value","Field42Label","Field43Value","Field43Label","Field44Value","Field44Label","Field45Value","Field45Label","Field46Value","Field46Label","Field47Value","Field47Label","Field48Value","Field48Label","Field49Value","Field49Label","Field50Value","Field50Label","Field51Value","Field51Label","Field52Value","Field52Label","Field53Value","Field53Label","Field54Value","Field54Label","Field55Value","Field55Label","Field56Value","Field56Label","Field57Value","Field57Label","Field58Value","Field58Label","Field59Value","Field59Label","Field60Value","Field60Label","Field61Value","Field61Label","Field62Value","Field62Label","Field63Value","Field63Label","Field64Value","Field64Label","Field65Value","Field65Label","Field66Value","Field66Label","Field67Value","Field67Label","Field68Value","Field68Label","Field69Value","Field69Label","Field70Value","Field70Label","Field71Value","Field71Label","Field72Value","Field72Label","Field73Value","Field73Label","Field74Value","Field74Label","Field75Value","Field75Label","Field76Value","Field76Label","Field77Value","Field77Label","Field78Value","Field78Label","Field79Value","Field79Label","Field80Value","Field80Label","Field81Value","Field81Label","Field82Value","Field82Label","Field83Value","Field83Label","Field84Value","Field84Label","Field85Value","Field85Label","Field86Value","Field86Label","Field87Value","Field87Label","Field88Value","Field88Label","Field89Value","Field89Label","Field90Value","Field90Label","Field91Value","Field91Label","Field92Value","Field92Label","Field93Value","Field93Label","Field94Value","Field94Label","Field95Value","Field95Label","Field96Value","Field96Label","Field97Value","Field97Label","Field98Value","Field98Label","Field99Value","Field99Label","Field100Value","Field100Label","Field101Value","Field101Label","Field102Value","Field102Label","Field103Value","Field103Label","Field104Value","Field104Label","Field105Value","Field105Label","Field106Value","Field106Label","Field107Value","Field107Label","Field108Value","Field108Label","Field109Value","Field109Label","Field110Value","Field110Label","Field111Value","Field111Label","Field112Value","Field112Label","Field113Value","Field113Label","Field114Value","Field114Label","Field115Value","Field115Label","Field116Value","Field116Label","Field117Value","Field117Label","Field118Value","Field118Label","Field119Value","Field119Label","Field120Value","Field120Label","Field121Value","Field121Label","Field122Value","Field122Label","Field123Value","Field123Label","Field124Value","Field124Label","Field125Value","Field125Label","Field126Value","Field126Label","Field127Value","Field127Label","Field128Value","Field128Label","Field129Value","Field129Label","Field130Value","Field130Label","Field131Value","Field131Label","Field132Value","Field132Label","Field133Value","Field133Label","Field134Value","Field134Label","Field135Value","Field135Label","Field136Value","Field136Label","Field137Value","Field137Label","Field138Value","Field138Label","Field139Value","Field139Label","Field140Value","Field140Label","Field141Value","Field141Label","Field142Value","Field142Label","Field143Value","Field143Label","Field144Value","Field144Label","Field145Value","Field145Label","Field146Value","Field146Label","Field147Value","Field147Label","Field148Value","Field148Label","Field149Value","Field149Label","Field150Value","Field150Label","Field151Value","Field151Label","Field152Value","Field152Label","Field153Value","Field153Label","Field154Value","Field154Label","Field155Value","Field155Label","Field156Value","Field156Label","Field157Value","Field157Label","Field158Value","Field158Label","Field159Value","Field159Label","Field160Value","Field160Label","Field161Value","Field161Label","Field162Value","Field162Label","Field163Value","Field163Label","Field164Value","Field164Label","Field165Value","Field165Label","Field166Value","Field166Label","Field167Value","Field167Label","Field168Value","Field168Label","Field169Value","Field169Label","Field170Value","Field170Label","Field171Value","Field171Label","Field172Value","Field172Label","Field173Value","Field173Label","Field174Value","Field174Label","Field175Value","Field175Label","Field176Value","Field176Label","Field177Value","Field177Label","Field178Value","Field178Label","Field179Value","Field179Label","Field180Value","Field180Label","Field181Value","Field181Label","Field182Value","Field182Label","Field183Value","Field183Label","Field184Value","Field184Label","Field185Value","Field185Label","Field186Value","Field186Label","Field187Value","Field187Label","Field188Value","Field188Label","Field189Value","Field189Label","Field190Value","Field190Label","Field191Value","Field191Label","Field192Value","Field192Label","Field193Value","Field193Label","Field194Value","Field194Label","Field195Value","Field195Label","Field196Value","Field196Label","Field197Value","Field197Label","Field198Value","Field198Label","Field199Value","Field199Label","Field200Value","Field200Label","Field201Value","Field201Label","Field202Value","Field202Label","Field203Value","Field203Label","Field204Value","Field204Label","Field205Value","Field205Label","Field206Value","Field206Label","Field207Value","Field207Label","Field208Value","Field208Label","Field209Value","Field209Label","Field210Value","Field210Label","Field211Value","Field211Label","Field212Value","Field212Label","Field213Value","Field213Label","Field214Value","Field214Label","Field215Value","Field215Label","Field216Value","Field216Label","Field217Value","Field217Label","Field218Value","Field218Label","Field219Value","Field219Label","Field220Value","Field220Label","Field221Value","Field221Label","Field222Value","Field222Label","Field223Value","Field223Label","Field224Value","Field224Label","Field225Value","Field225Label","Field226Value","Field226Label","Field227Value","Field227Label","Field228Value","Field228Label","Field229Value","Field229Label","Field230Value","Field230Label","Field231Value","Field231Label","Field232Value","Field232Label","Field233Value","Field233Label","Field234Value","Field234Label","Field235Value","Field235Label","Field236Value","Field236Label","Field237Value","Field237Label","Field238Value","Field238Label","Field239Value","Field239Label","Field240Value","Field240Label","Field241Value","Field241Label","Field242Value","Field242Label","Field243Value","Field243Label","Field244Value","Field244Label","Field245Value","Field245Label","Field246Value","Field246Label","Field247Value","Field247Label","Field248Value","Field248Label","Field249Value","Field249Label","Field250Value","Field250Label","Field251Value","Field251Label","Field252Value","Field252Label","Field253Value","Field253Label","Field254Value","Field254Label","Field255Value","Field255Label","Field256Value","Field256Label","Field257Value","Field257Label","Field258Value","Field258Label","Field259Value","Field259Label","Field260Value","Field260Label","Field261Value","Field261Label","Field262Value","Field262Label","Field263Value","Field263Label","Field264Value","Field264Label","Field265Value","Field265Label","Field266Value","Field266Label","Field267Value","Field267Label","Field268Value","Field268Label","Field269Value","Field269Label","Field270Value","Field270Label","Field271Value","Field271Label","Field272Value","Field272Label","Field273Value","Field273Label","Field274Value","Field274Label","Field275Value","Field275Label","Field276Value","Field276Label","Field277Value","Field277Label","Field278Value","Field278Label","Field279Value","Field279Label","Field280Value","Field280Label","Field281Value","Field281Label","Field282Value","Field282Label","Field283Value","Field283Label","Field284Value","Field284Label","Field285Value","Field285Label","Field286Value","Field286Label","Field287Value","Field287Label","Field288Value","Field288Label","Field289Value","Field289Label","Field290Value","Field290Label","Field291Value","Field291Label","Field292Value","Field292Label","Field293Value","Field293Label","Field294Value","Field294Label","Field295Value","Field295Label","Field296Value","Field296Label","Field297Value","Field297Label","Field298Value","Field298Label","Field299Value","Field299Label","Field300Value","Field300Label","ErrorMsg","StudyName","SiteGroupParameter","SiteNumberParameter","SiteParameter","SubjectParameter","FormParameter","FieldParameter","FilterField","FilterValue","StartDateParameter","EndDateParameter","RunUser","VersionNumber","PrintDateTime","TimeZone","LastModifiedDateSortable","StartDateSortable","EndDateSortable" +"CZE","9746","DD5-CZ10001","Centrum gastroenterologie a hepatologie s.r.o.","193508","CZ100012001","6330","2892067","Screening","3","Date of Visit","31359746","0","22 Jan 2026 16:21:08:447","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","22 JAN 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260122 16:21:08.447","","" +"CZE","9746","DD5-CZ10001","Centrum gastroenterologie a hepatologie s.r.o.","193508","CZ100012001","6330","2945701","Week I-0 (1)","7","Date of Visit","32099770","0","19 Feb 2026 07:41:15:130","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","19 FEB 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260219 07:41:15.130","","" +"CZE","9746","DD5-CZ10001","Centrum gastroenterologie a hepatologie s.r.o.","193508","CZ100012001","6330","2945834","Week I-2 (1)","8","Date of Visit","32101284","0","04 Mar 2026 09:29:40:097","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","04 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260304 09:29:40.097","","" +"CZE","9746","DD5-CZ10001","Centrum gastroenterologie a hepatologie s.r.o.","193508","CZ100012001","6330","2976291","Week I-4 (1)","9","Date of Visit","32521333","0","18 Mar 2026 06:52:32:477","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","18 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260318 06:52:32.477","","" +"CZE","9746","DD5-CZ10001","Centrum gastroenterologie a hepatologie s.r.o.","196619","CZ100012002","6330","2957354","Screening","3","Date of Visit","32277668","0","02 Mar 2026 11:19:53:717","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","25 FEB 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260302 11:19:53.717","","" +"CZE","9746","DD5-CZ10001","Centrum gastroenterologie a hepatologie s.r.o.","196619","CZ100012002","6330","3052800","Week I-0 (1)","7","Date of Visit","33544164","0","08 Apr 2026 05:43:05:867","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","08 APR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260408 05:43:05.867","","" +"CZE","9733","DD5-CZ10006","MUDr. Michal Konecny, Ph.D. s.r.o.","195473","CZ100062001","6330","2934312","Screening","3","Date of Visit","31932393","0","07 Mar 2026 21:33:13:977","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","13 FEB 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260307 21:33:13.977","","" +"CZE","9974","DD5-CZ10009","PreventaMed, s.r.o.","200677","CZ100092001","6330","3041866","Screening","3","Date of Visit","33396436","0","06 Apr 2026 09:50:06:007","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","31 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260406 09:50:06.007","","" +"CZE","9749","DD5-CZ10012","Fakultni nemocnice Brno","198479","CZ100122001","6330","2997818","Screening","3","Date of Visit","32821084","0","12 Mar 2026 09:38:16:330","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","10 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260312 09:38:16.330","","" +"CZE","9749","DD5-CZ10012","Fakultni nemocnice Brno","198479","CZ100122001","6330","3051358","Week I-0 (1)","7","Date of Visit","33524299","0","08 Apr 2026 06:12:47:737","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","07 APR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260408 06:12:47.737","","" +"CZE","9735","DD5-CZ10013","Vojenska nemocnice Brno","196757","CZ100132001","6330","2960289","Screening","3","Date of Visit","32319366","0","09 Mar 2026 11:03:26:887","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","26 FEB 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260309 11:03:26.887","","" +"CZE","9735","DD5-CZ10013","Vojenska nemocnice Brno","196757","CZ100132001","6330","3027462","Week I-0 (1)","7","Date of Visit","33207977","0","26 Mar 2026 11:25:10:850","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","24 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260326 11:25:10.850","","" +"CZE","9735","DD5-CZ10013","Vojenska nemocnice Brno","196757","CZ100132001","6330","3035611","Week I-2 (1)","8","Date of Visit","33313608","0","10 Apr 2026 08:08:17:787","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","7 APR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260410 08:08:17.787","","" +"CZE","9735","DD5-CZ10013","Vojenska nemocnice Brno","200793","CZ100132002","6330","3044287","Screening","3","Date of Visit","33430635","0","09 Apr 2026 09:17:41:950","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","01 APR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260409 09:17:41.950","","" +"CZE","9709","DD5-CZ10021","Nemocnice Ceske Budejovice","196612","CZ100212001","6330","2957203","Screening","3","Date of Visit","32275046","0","17 Mar 2026 13:22:43:797","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","25 FEB 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260317 13:22:43.797","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","192922","CZ100222001","6330","2880184","Screening","3","Date of Visit","31215209","0","06 Mar 2026 10:59:41:280","No Forms","SDVTier","Yes","Did this visit occur?","DISCONTINUING STUDY","Subjects Status","15 JAN 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260306 10:59:41.280","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","193591","CZ100222002","6330","2894251","Screening","3","Date of Visit","31388300","0","27 Feb 2026 14:50:20:233","No Forms","SDVTier","Yes","Did this visit occur?","DISCONTINUING STUDY","Subjects Status","23 JAN 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260227 14:50:20.233","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","196997","CZ100222003","6330","2965444","Screening","3","Date of Visit","32375566","0","02 Mar 2026 12:48:21:227","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","02 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260302 12:48:21.227","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","196997","CZ100222003","6330","2989688","Week I-0 (1)","7","Date of Visit","32706051","0","09 Mar 2026 10:14:05:780","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","9 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260309 10:14:05.780","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","196997","CZ100222003","6330","2990136","Week I-2 (1)","8","Date of Visit","32712620","0","27 Mar 2026 07:03:19:320","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","27 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260327 07:03:19.320","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","196997","CZ100222003","6330","3037395","Week I-4 (1)","9","Date of Visit","33339972","0","08 Apr 2026 08:50:32:657","Tier 1","SDVTier","Yes","Did this visit occur?","DISCONTINUING STUDY","Subjects Status","8 APR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260408 08:50:32.657","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","197226","CZ100222004","6330","2969804","Screening","3","Date of Visit","32431117","0","24 Mar 2026 12:11:50:810","No Forms","SDVTier","Yes","Did this visit occur?","DISCONTINUING STUDY","Subjects Status","03 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260324 12:11:50.810","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","197500","CZ100222005","6330","2975900","Screening","3","Date of Visit","32515721","0","04 Mar 2026 11:15:51:773","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","04 MAR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260304 11:15:51.773","","" +"CZE","9710","DD5-CZ10022","Clinoxus s r o","197500","CZ100222005","6330","3056606","Week I-0 (1)","7","Date of Visit","33592277","0","09 Apr 2026 09:45:00:203","Tier 1","SDVTier","Yes","Did this visit occur?","CONTINUING","Subjects Status","9 APR 2026","Visit Start Date","Site Visit","Type of Contact","","Reason this visit did not occur","","AE log line, start date, and term","","If Other, specify","","Reason for the unscheduled visit","","Age at visit","","Instance Name","","VISDAT for CTMS","","INACT tracker (operational field)","","NOW (operational field)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","77242113UCO3001 - Prod","CZE","All","All","All","Date of Visit","All","None","None","1/1/1950 12:00:00 AM","4/10/2026 11:59:00 PM","Vladimir Buzalka [Site Manager]","5.5 - 1.01","20260410 09:27:41.790","GMT","20260409 09:45:00.203","","" diff --git a/Covance_UCO3001/create_report.py b/Covance_UCO3001/create_report.py new file mode 100644 index 0000000..aaf8009 --- /dev/null +++ b/Covance_UCO3001/create_report.py @@ -0,0 +1,282 @@ +import glob +import os +import shutil +import pandas as pd +from openpyxl import load_workbook +from openpyxl.styles import Font, PatternFill, Border, Side, Alignment +from openpyxl.utils import get_column_letter +from datetime import date, datetime + +# Paths +src_dir = "U:/PythonProject/Janssen/Covance_UCO3001/" +out_dir = "U:/Dropbox/!!!Days/Downloads Z230/" + +# Find source files +src_files = glob.glob(src_dir + "3001Specimeninventoryreport*.xlsx") +assert src_files, "Source file not found!" +src_file = src_files[0] +print(f"Source xlsx: {src_file}") + +csv_files = glob.glob(src_dir + "_EDCStdRpt-DataListing.csv") +assert csv_files, "CSV file not found!" +csv_file = csv_files[0] +print(f"Source csv: {csv_file}") + +# Delete old output report if exists +today = date.today().strftime("%Y-%m-%d") +out_filename = f"{today} 77242113UCO3001 Speciment Inventory report.xlsx" +out_path = out_dir + out_filename + +for old in glob.glob(out_dir + "*77242113UCO3001 Speciment Inventory report*.xlsx"): + os.remove(old) + print(f"Deleted old: {old}") + +# Copy source file to output — preserves all formatting perfectly +shutil.copy2(src_file, out_path) + +# Load data with pandas for analysis +df = pd.read_excel(src_file, sheet_name=0, header=2) + +# All unique patients +all_patients = sorted(df['Patient Number'].dropna().unique()) + +# BXSCR and DNA rows +bxscr = df[df['Protocol Visit Code'] == 'BXSCR'] +dna = df[df['Protocol Visit Code'] == 'DNA'] + +# Parse date value to datetime object +def fmt_date(val): + if pd.isna(val): + return None + if isinstance(val, str): + return datetime.strptime(val, '%d-%b-%Y') + return pd.to_datetime(val).to_pydatetime() + +# Get Container Receipt Date + Excel row for patient+specimen from given visit dataframe +# Excel row = pandas df index + 4 (rows 1-2 title, row 3 header, data from row 4) +def get_specimen_info(visit_df, patient, specimen_type=None): + rows = visit_df[visit_df['Patient Number'] == patient] + if specimen_type: + rows = rows[rows['Specimen Type'] == specimen_type] + if rows.empty: + return '', None + row = rows.iloc[0] + return fmt_date(row['Container Receipt Date']), rows.index[0] + 4 + +# Get Container Receipt Date + Excel row by Container Label Line 1 code and visit code +def get_label_info(patient, label_code, visit_code): + rows = df[(df['Patient Number'] == patient) & + (df['Protocol Visit Code'] == visit_code) & + (df['Container Label Line 1'] == label_code)] + if rows.empty: + return '', None + row = rows.iloc[0] + return fmt_date(row['Container Receipt Date']), rows.index[0] + 4 + +# Open copied workbook and add analysis sheet +out_wb = load_workbook(out_path) + +# Create analysis sheet +analysis_ws = out_wb.create_sheet("Přehled vzorků") + +thin = Side(style='thin') +border = Border(left=thin, right=thin, top=thin, bottom=thin) + +# Column definitions: (header, width) +# No "Visit code" column +columns = [ + ("Investigator Name", 24), + ("Číslo pacienta", 20), + ("Máme biopsii SM11", 20), # col 3 → SCREENING C:E + ("Máme RNA", 16), + ("Máme Cryostor", 16), + ("DNA", 14), # col 6 → no group + ("PLASMPK I-0 TROUGH", 18), # col 7 → RANDOMIZACE I-0 G:L + ("PLASMA PK I-0 PEAK", 18), + ("SERUM ADA I-0 PRE", 18), + ("SM06/SERUM BIOM", 16), + ("SM07/WB RNA", 14), + ("SM10/FECAL", 14), + ("PLASMPK I-2 TROUGH", 18), # col 13 → I-2 M:P + ("PLASMA PK I-2 PEAK", 18), + ("SERUM ADA I-2 PRE", 18), + ("STOOL I-2", 12), + ("PLASMPK I-4 TROUGH", 18), # col 17 → I-4 Q:V + ("PLASMA PK I-4 PEAK", 18), + ("SERUM ADA I-4 PRE", 18), + ("SM06/SERUM BIOM", 16), + ("SM07/WB RNA", 14), + ("STOOL I-4", 12), +] + +# Row 1 — group headers +group_font = Font(name='Calibri', bold=True, size=11) +group_fill = PatternFill("solid", fgColor="FFFFFF") # white, same as user's theme=0 +group_border = Border(left=thin, right=thin, top=thin, bottom=thin) + +groups = [ + (3, 5, "SCREENING"), + (7, 12, "RANDOMIZACE I-0"), + (13, 16, "I-2"), + (17, 22, "I-4"), +] +for start_col, end_col, label in groups: + analysis_ws.merge_cells(start_row=1, start_column=start_col, end_row=1, end_column=end_col) + cell = analysis_ws.cell(row=1, column=start_col, value=label) + cell.font = group_font + cell.fill = group_fill + cell.alignment = Alignment(horizontal='center', vertical='center') + cell.border = group_border + # apply border to all merged cells + for c in range(start_col, end_col + 1): + analysis_ws.cell(row=1, column=c).border = group_border + +analysis_ws.row_dimensions[1].height = 20 + +# Row 2 — column headers +header_fill = PatternFill("solid", fgColor="4472C4") +header_font = Font(name='Calibri', bold=True, size=11, color="FFFFFF") + +for col_idx, (header, width) in enumerate(columns, 1): + cell = analysis_ws.cell(row=2, column=col_idx, value=header) + cell.font = header_font + cell.fill = header_fill + cell.border = border + cell.alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) + analysis_ws.column_dimensions[get_column_letter(col_idx)].width = width + +analysis_ws.row_dimensions[2].height = 30 + +# Freeze first 2 columns and first 2 rows +analysis_ws.freeze_panes = "C3" + +# Data rows start at row 3 +date_font_link = Font(name='Calibri', size=11, color="000000", underline='single') +yes_fill = PatternFill("solid", fgColor="E2EFDA") +no_fill = PatternFill("solid", fgColor="FFE7E7") +data_font = Font(name='Calibri', size=11) + +src_sheet_name = out_wb.sheetnames[0] +pat_sheet_name = "Seznam pacientů" + +# Build patient → first Excel row in "Seznam pacientů" (header=row1, data from row2) +# pat_df is built later, but we need sorted order — pre-sort here too +_csv_df_pre = pd.read_csv(csv_file, encoding='utf-8') +_pat_pre = _csv_df_pre[['SiteNumber', 'Subject', 'Field4Value']].copy() +_pat_pre['Field4Value'] = _pat_pre['Field4Value'].apply(lambda v: datetime.strptime(str(v).strip(), '%d %b %Y') if pd.notna(v) else None) +_pat_pre = _pat_pre.sort_values(['SiteNumber', 'Subject', 'Field4Value']).reset_index(drop=True) +patient_row_map = {} +for i, row in _pat_pre.iterrows(): + pat = row['Subject'] + if pat not in patient_row_map: + patient_row_map[pat] = i + 2 # +1 for 1-based, +1 for header row + +# Only patients with any BXSCR record +bxscr_patients = sorted(bxscr['Patient Number'].dropna().unique()) + +for row_idx, patient in enumerate(bxscr_patients, 3): + investigator = bxscr[bxscr['Patient Number'] == patient].iloc[0]['Investigator Name'] + sm11, sm11_row = get_specimen_info(bxscr, patient, 'Tissue , Paraffin Block') + rna, rna_row = get_specimen_info(bxscr, patient, 'Biopsy RNA Later') + cryo, cryo_row = get_specimen_info(bxscr, patient, 'Biopsy, Frozen Tissue') + dna_date, dna_row = get_specimen_info(dna, patient) + trough, trough_row = get_label_info(patient, 'PLASMPK I-0 TROUGH', 'I-0') + peak, peak_row = get_label_info(patient, 'PLASMA PK I-0 PEAK', 'I-0') + ada, ada_row = get_label_info(patient, 'SERUM ADA I-0 PRE', 'I-0') + sm06, sm06_row = get_label_info(patient, 'SM06/SERUM BIOM', 'I-0') + sm07, sm07_row = get_label_info(patient, 'SM07/WB RNA', 'I-0') + sm10, sm10_row = get_label_info(patient, 'SM10/FECAL', 'I-0') + trough2, trough2_row = get_label_info(patient, 'PLASMPK I-2 TROUGH', 'I-2') + peak2, peak2_row = get_label_info(patient, 'PLASMA PK I-2 PEAK', 'I-2') + ada2, ada2_row = get_label_info(patient, 'SERUM ADA I-2 PRE', 'I-2') + stool2, stool2_row = get_label_info(patient, 'STOOL I-2', 'I-2') + trough4, trough4_row = get_label_info(patient, 'PLASMPK I-4 TROUGH', 'I-4') + peak4, peak4_row = get_label_info(patient, 'PLASMA PK I-4 PEAK', 'I-4') + ada4, ada4_row = get_label_info(patient, 'SERUM ADA I-4 PRE', 'I-4') + sm064, sm064_row = get_label_info(patient, 'SM06/SERUM BIOM', 'I-4') + sm074, sm074_row = get_label_info(patient, 'SM07/WB RNA', 'I-4') + stool4, stool4_row = get_label_info(patient, 'STOOL I-4', 'I-4') + + # col 1-2: plain text, col 3+: (date, excel_row) tuples + row_data = [investigator, patient, + (sm11, sm11_row), (rna, rna_row), (cryo, cryo_row), (dna_date, dna_row), + (trough, trough_row), (peak, peak_row), (ada, ada_row), + (sm06, sm06_row), (sm07, sm07_row), (sm10, sm10_row), + (trough2, trough2_row), (peak2, peak2_row), (ada2, ada2_row), (stool2, stool2_row), + (trough4, trough4_row), (peak4, peak4_row), (ada4, ada4_row), + (sm064, sm064_row), (sm074, sm074_row), (stool4, stool4_row)] + + for col_idx, value in enumerate(row_data, 1): + if col_idx <= 2: + cell = analysis_ws.cell(row=row_idx, column=col_idx, value=value) + if col_idx == 2 and patient in patient_row_map: + cell.hyperlink = f"#'{pat_sheet_name}'!B{patient_row_map[patient]}" + cell.font = Font(name='Calibri', size=11, underline='single') + else: + cell.font = data_font + else: + dt, excel_row = value + cell = analysis_ws.cell(row=row_idx, column=col_idx, value=dt) + if dt and excel_row is not None: + cell.hyperlink = f"#'{src_sheet_name}'!A{excel_row}" + cell.font = date_font_link + cell.fill = yes_fill + cell.number_format = 'DD-MMM-YYYY' + else: + cell.font = Font(name='Calibri', size=11, color="C00000") + cell.fill = no_fill + cell.border = border + cell.alignment = Alignment(horizontal='center', vertical='center') + +# ── Seznam pacientů sheet ──────────────────────────────────────────────────── +csv_df = pd.read_csv(csv_file, encoding='utf-8') + +patients_ws = out_wb.create_sheet("Seznam pacientů") + +pat_columns = [ + ("Číslo centra", 20), + ("Číslo pacienta", 20), + ("Kód návštěvy", 20), + ("Datum návštěvy", 16), + ("Typ návštěvy", 16), +] + +# Header row +for col_idx, (col_name, width) in enumerate(pat_columns, 1): + cell = patients_ws.cell(row=1, column=col_idx, value=col_name) + cell.font = header_font + cell.fill = header_fill + cell.border = border + cell.alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) + patients_ws.column_dimensions[get_column_letter(col_idx)].width = width + +patients_ws.row_dimensions[1].height = 30 +patients_ws.freeze_panes = "A2" + +# Prepare and sort data +def parse_date(val): + if pd.isna(val) or str(val).strip() == '': + return None + try: + return datetime.strptime(str(val).strip(), '%d %b %Y') + except: + return None + +pat_df = csv_df[['SiteNumber', 'Subject', 'InstanceName', 'Field4Value', 'Field5Value']].copy() +pat_df['Field4Value'] = pat_df['Field4Value'].apply(parse_date) +pat_df = pat_df.sort_values(['SiteNumber', 'Subject', 'Field4Value']).reset_index(drop=True) + +# Data rows +for row_idx, row in enumerate(pat_df.itertuples(index=False), 2): + for col_idx, value in enumerate(row, 1): + cell = patients_ws.cell(row=row_idx, column=col_idx, value=value) + cell.font = data_font + cell.border = border + cell.alignment = Alignment(horizontal='center', vertical='center') + if col_idx == 4 and value is not None: + cell.number_format = 'DD-MMM-YYYY' + +out_wb.save(out_path) +print(f"Saved: {out_path}") +print(f"Patients with BXSCR: {len(bxscr_patients)}") +print(f"All unique patients: {len(all_patients)}") diff --git a/format_accountability.py b/IWRS/Testing/format_accountability.py similarity index 100% rename from format_accountability.py rename to IWRS/Testing/format_accountability.py diff --git a/list_reports.py b/IWRS/Testing/list_reports.py similarity index 100% rename from list_reports.py rename to IWRS/Testing/list_reports.py diff --git a/sheet_assigned_not_dispensed.py b/IWRS/Testing/sheet_assigned_not_dispensed.py similarity index 100% rename from sheet_assigned_not_dispensed.py rename to IWRS/Testing/sheet_assigned_not_dispensed.py diff --git a/sheet_expired.py b/IWRS/Testing/sheet_expired.py similarity index 100% rename from sheet_expired.py rename to IWRS/Testing/sheet_expired.py diff --git a/sheet_kits_for_destruction.py b/IWRS/Testing/sheet_kits_for_destruction.py similarity index 100% rename from sheet_kits_for_destruction.py rename to IWRS/Testing/sheet_kits_for_destruction.py diff --git a/sheet_not_returned.py b/IWRS/Testing/sheet_not_returned.py similarity index 100% rename from sheet_not_returned.py rename to IWRS/Testing/sheet_not_returned.py diff --git a/create_accountability_report.py b/IWRS/create_accountability_report.py similarity index 100% rename from create_accountability_report.py rename to IWRS/create_accountability_report.py diff --git a/download_ip_destruction.py b/IWRS/download_ip_destruction.py similarity index 100% rename from download_ip_destruction.py rename to IWRS/download_ip_destruction.py diff --git a/download_reports.py b/IWRS/download_reports.py similarity index 100% rename from download_reports.py rename to IWRS/download_reports.py diff --git a/IWRS/output/2026-04-10 42847922MDD3003 CZ IWRS overview.xlsx b/IWRS/output/2026-04-10 42847922MDD3003 CZ IWRS overview.xlsx new file mode 100644 index 0000000..3ace6aa Binary files /dev/null and b/IWRS/output/2026-04-10 42847922MDD3003 CZ IWRS overview.xlsx differ diff --git a/reports.json b/IWRS/reports.json similarity index 100% rename from reports.json rename to IWRS/reports.json diff --git a/xls_ip_destruction/ip_destruction_basket_194.xlsx b/IWRS/xls_ip_destruction/ip_destruction_basket_194.xlsx similarity index 100% rename from xls_ip_destruction/ip_destruction_basket_194.xlsx rename to IWRS/xls_ip_destruction/ip_destruction_basket_194.xlsx diff --git a/xls_ip_destruction/ip_destruction_basket_202.xlsx b/IWRS/xls_ip_destruction/ip_destruction_basket_202.xlsx similarity index 100% rename from xls_ip_destruction/ip_destruction_basket_202.xlsx rename to IWRS/xls_ip_destruction/ip_destruction_basket_202.xlsx diff --git a/xls_ip_destruction/ip_destruction_basket_248.xlsx b/IWRS/xls_ip_destruction/ip_destruction_basket_248.xlsx similarity index 100% rename from xls_ip_destruction/ip_destruction_basket_248.xlsx rename to IWRS/xls_ip_destruction/ip_destruction_basket_248.xlsx diff --git a/xls_ip_destruction/ip_destruction_basket_269.xlsx b/IWRS/xls_ip_destruction/ip_destruction_basket_269.xlsx similarity index 100% rename from xls_ip_destruction/ip_destruction_basket_269.xlsx rename to IWRS/xls_ip_destruction/ip_destruction_basket_269.xlsx diff --git a/xls_ip_destruction/ip_destruction_basket_273.xlsx b/IWRS/xls_ip_destruction/ip_destruction_basket_273.xlsx similarity index 100% rename from xls_ip_destruction/ip_destruction_basket_273.xlsx rename to IWRS/xls_ip_destruction/ip_destruction_basket_273.xlsx diff --git a/xls_ip_destruction/ip_destruction_basket_276.xlsx b/IWRS/xls_ip_destruction/ip_destruction_basket_276.xlsx similarity index 100% rename from xls_ip_destruction/ip_destruction_basket_276.xlsx rename to IWRS/xls_ip_destruction/ip_destruction_basket_276.xlsx diff --git a/xls_reports/onsite_inventory_detail_S10-CZ10002.xlsx b/IWRS/xls_reports/onsite_inventory_detail_S10-CZ10002.xlsx similarity index 100% rename from xls_reports/onsite_inventory_detail_S10-CZ10002.xlsx rename to IWRS/xls_reports/onsite_inventory_detail_S10-CZ10002.xlsx diff --git a/xls_reports/onsite_inventory_detail_S10-CZ10004.xlsx b/IWRS/xls_reports/onsite_inventory_detail_S10-CZ10004.xlsx similarity index 100% rename from xls_reports/onsite_inventory_detail_S10-CZ10004.xlsx rename to IWRS/xls_reports/onsite_inventory_detail_S10-CZ10004.xlsx diff --git a/xls_reports/onsite_inventory_detail_S10-CZ10005.xlsx b/IWRS/xls_reports/onsite_inventory_detail_S10-CZ10005.xlsx similarity index 100% rename from xls_reports/onsite_inventory_detail_S10-CZ10005.xlsx rename to IWRS/xls_reports/onsite_inventory_detail_S10-CZ10005.xlsx diff --git a/xls_reports/onsite_inventory_detail_S10-CZ10008.xlsx b/IWRS/xls_reports/onsite_inventory_detail_S10-CZ10008.xlsx similarity index 100% rename from xls_reports/onsite_inventory_detail_S10-CZ10008.xlsx rename to IWRS/xls_reports/onsite_inventory_detail_S10-CZ10008.xlsx diff --git a/xls_reports/onsite_inventory_detail_S10-CZ10011.xlsx b/IWRS/xls_reports/onsite_inventory_detail_S10-CZ10011.xlsx similarity index 100% rename from xls_reports/onsite_inventory_detail_S10-CZ10011.xlsx rename to IWRS/xls_reports/onsite_inventory_detail_S10-CZ10011.xlsx diff --git a/xls_reports/onsite_inventory_detail_S10-CZ10012.xlsx b/IWRS/xls_reports/onsite_inventory_detail_S10-CZ10012.xlsx similarity index 100% rename from xls_reports/onsite_inventory_detail_S10-CZ10012.xlsx rename to IWRS/xls_reports/onsite_inventory_detail_S10-CZ10012.xlsx diff --git a/output/2026-04-08 42847922MDD3003 CZ IWRS overview.xlsx b/output/2026-04-08 42847922MDD3003 CZ IWRS overview.xlsx deleted file mode 100644 index 4cf16ef..0000000 Binary files a/output/2026-04-08 42847922MDD3003 CZ IWRS overview.xlsx and /dev/null differ