Compare commits

...

14 Commits

8 changed files with 171 additions and 498052 deletions

6
.gitignore vendored
View File

@@ -195,3 +195,9 @@ Endobest Reporting/
jsons history/ jsons history/
nul nul
# Ignore all json, exe, log and xlsx files
*.json
*.exe
*.log
/*.xlsx
!eb_org_center_mapping.xlsx

View File

Binary file not shown.

View File

@@ -21,7 +21,7 @@
# identification, and support for complex data extraction using JSON path expressions. # identification, and support for complex data extraction using JSON path expressions.
import json import json
import logging import logging
import msvcrt
import os import os
import re import re
import sys import sys
@@ -118,6 +118,9 @@ access_token = ""
refresh_token = "" refresh_token = ""
threads_list = [] threads_list = []
_token_refresh_lock = threading.Lock() _token_refresh_lock = threading.Lock()
on_retry_exhausted = "ask" # "ask" | "ignore" | "abort" — set at startup
_stored_username = "" # Credentials stored at login for automatic re-login
_stored_password = ""
_threads_list_lock = threading.Lock() _threads_list_lock = threading.Lock()
global_pbar = None global_pbar = None
_global_pbar_lock = threading.Lock() _global_pbar_lock = threading.Lock()
@@ -186,8 +189,10 @@ def new_token():
finally: finally:
if attempt < ERROR_MAX_RETRY - 1: if attempt < ERROR_MAX_RETRY - 1:
sleep(WAIT_BEFORE_RETRY) sleep(WAIT_BEFORE_RETRY)
logging.critical("Persistent error in refresh_token") # Refresh token exhausted — attempt full re-login with stored credentials
raise httpx.RequestError(message="Persistent error in refresh_token") logging.warning("Refresh token exhausted. Attempting re-login with stored credentials.")
_do_login(_stored_username, _stored_password)
logging.info("Re-login successful. New tokens acquired.")
def api_call_with_retry(func): def api_call_with_retry(func):
@@ -212,7 +217,10 @@ def api_call_with_retry(func):
if isinstance(exc, httpx.HTTPStatusError) and exc.response.status_code == 401: if isinstance(exc, httpx.HTTPStatusError) and exc.response.status_code == 401:
logging.info(f"Token expired for {func_name}. Refreshing token.") logging.info(f"Token expired for {func_name}. Refreshing token.")
new_token() try:
new_token()
except (httpx.RequestError, httpx.HTTPStatusError) as token_exc:
logging.warning(f"Token refresh/re-login failed for {func_name}: {token_exc}")
if attempt < ERROR_MAX_RETRY - 1: if attempt < ERROR_MAX_RETRY - 1:
sleep(WAIT_BEFORE_RETRY) sleep(WAIT_BEFORE_RETRY)
@@ -225,32 +233,41 @@ def api_call_with_retry(func):
sleep(WAIT_BEFORE_NEW_BATCH_OF_RETRIES) sleep(WAIT_BEFORE_NEW_BATCH_OF_RETRIES)
break # Exit for loop to restart batch in while True break # Exit for loop to restart batch in while True
else: else:
# All automatic batches exhausted, ask the user # All automatic batches exhausted — apply on_retry_exhausted policy
with _user_interaction_lock: with _user_interaction_lock:
console.print(f"\n[bold red]Persistent error in {func_name} after {batch_count} batches ({total_attempts} attempts).[/bold red]") if on_retry_exhausted == "ignore":
console.print(f"[red]Exception: {exc}[/red]")
choice = questionary.select(
f"What would you like to do for {func_name}?",
choices=[
"Retry (try another batch of retries)",
"Ignore (return None and continue)",
"Stop script (critical error)"
]
).ask()
if choice == "Retry (try another batch of retries)":
logging.info(f"User chose to retry {func_name}. Restarting batch sequence.")
batch_count = 1 # Reset batch counter for the next interactive round
break # Exit for loop to restart batch in while True
elif choice == "Ignore (return None and continue)":
# Retrieve context if available
ctx = getattr(thread_local_storage, "current_patient_context", {"id": "Unknown", "pseudo": "Unknown"}) ctx = getattr(thread_local_storage, "current_patient_context", {"id": "Unknown", "pseudo": "Unknown"})
logging.warning(f"[IGNORE] User opted to skip {func_name} for Patient {ctx['id']} ({ctx['pseudo']}). Error: {exc}") logging.warning(f"[AUTO-IGNORE] Skipping {func_name} for Patient {ctx['id']} ({ctx['pseudo']}). Error: {exc}")
return None return None
else:
logging.critical(f"User chose to stop script after persistent error in {func_name}.") elif on_retry_exhausted == "abort":
raise httpx.RequestError(message=f"Persistent error in {func_name} (stopped by user)") logging.critical(f"[AUTO-ABORT] Stopping script after persistent error in {func_name}. Error: {exc}")
raise httpx.RequestError(message=f"Persistent error in {func_name} (auto-aborted)")
else: # "ask" — display error then interactive prompt
console.print(f"\n[bold red]Persistent error in {func_name} after {batch_count} batches ({total_attempts} attempts).[/bold red]")
console.print(f"[red]Exception: {exc}[/red]")
choice = questionary.select(
f"What would you like to do for {func_name}?",
choices=[
"Retry (try another batch of retries)",
"Ignore (return None and continue)",
"Stop script (critical error)"
]
).ask()
if choice == "Retry (try another batch of retries)":
logging.info(f"User chose to retry {func_name}. Restarting batch sequence.")
batch_count = 1 # Reset batch counter for the next interactive round
break # Exit for loop to restart batch in while True
elif choice == "Ignore (return None and continue)":
ctx = getattr(thread_local_storage, "current_patient_context", {"id": "Unknown", "pseudo": "Unknown"})
logging.warning(f"[IGNORE] User opted to skip {func_name} for Patient {ctx['id']} ({ctx['pseudo']}). Error: {exc}")
return None
else:
logging.critical(f"User chose to stop script after persistent error in {func_name}.")
raise httpx.RequestError(message=f"Persistent error in {func_name} (stopped by user)")
return wrapper return wrapper
@@ -259,51 +276,56 @@ def api_call_with_retry(func):
# BLOCK 3: AUTHENTICATION # BLOCK 3: AUTHENTICATION
# ============================================================================ # ============================================================================
def login(): def _do_login(username, password):
"""Performs the two-step authentication (IAM → RC) with the given credentials.
Updates global access_token and refresh_token on success.
Raises httpx.RequestError or httpx.HTTPStatusError on failure.
Must NOT acquire _token_refresh_lock (caller's responsibility).
"""
global access_token, refresh_token global access_token, refresh_token
client = get_httpx_client()
client.base_url = IAM_URL
response = client.post(API_AUTH_LOGIN_ENDPOINT,
json={"username": username, "password": password},
timeout=20)
response.raise_for_status()
master_token = response.json()["access_token"]
user_id = response.json()["userId"]
client = get_httpx_client()
client.base_url = RC_URL
response = client.post(API_AUTH_CONFIG_TOKEN_ENDPOINT,
headers={"Authorization": f"Bearer {master_token}"},
json={"userId": user_id, "clientId": RC_APP_ID,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"},
timeout=20)
response.raise_for_status()
access_token = response.json()["access_token"]
refresh_token = response.json()["refresh_token"]
def login():
global _stored_username, _stored_password
user_name = (questionary.text("login :", default=DEFAULT_USER_NAME).ask()) user_name = (questionary.text("login :", default=DEFAULT_USER_NAME).ask())
password = (questionary.password("password :", default=DEFAULT_PASSWORD).ask()) password = (questionary.password("password :", default=DEFAULT_PASSWORD).ask())
if not (user_name and password): if not (user_name and password):
return "Exit" return "Exit"
try: try:
client = get_httpx_client() _do_login(user_name, password)
client.base_url = IAM_URL
response = client.post(API_AUTH_LOGIN_ENDPOINT, json={"username": user_name, "password": password},
timeout=20)
response.raise_for_status()
master_token = response.json()["access_token"]
user_id = response.json()["userId"]
except httpx.RequestError as exc: except httpx.RequestError as exc:
print(f"Login Error : {exc}") print(f"Login Error : {exc}")
logging.warning(f"Login Error : {exc}") logging.warning(f"Login Error : {exc}")
return "Error" return "Error"
except httpx.HTTPStatusError as exc: except httpx.HTTPStatusError as exc:
print(f"Login Error : {exc.response.status_code} for Url {exc.request.url}") print(f"Login Error : {exc.response.status_code} for Url {exc.request.url}")
logging.warning( logging.warning(f"Login Error : {exc.response.status_code} for Url {exc.request.url}")
f"Login Error : {exc.response.status_code} for Url {exc.request.url}")
return "Error"
try:
client = get_httpx_client()
client.base_url = RC_URL
response = client.post(API_AUTH_CONFIG_TOKEN_ENDPOINT, headers={"Authorization": f"Bearer {master_token}"},
json={"userId": user_id, "clientId": RC_APP_ID,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"},
timeout=20)
response.raise_for_status()
access_token = response.json()["access_token"]
refresh_token = response.json()["refresh_token"]
except httpx.RequestError as exc:
print(f"Login Error : {exc}")
logging.warning(f"Login Error : {exc}")
return "Error"
except httpx.HTTPStatusError as exc:
print(f"Login Error : {exc.response.status_code} for Url {exc.request.url}")
logging.warning(f"Login Error : {exc}")
return "Error" return "Error"
_stored_username = user_name
_stored_password = password
print() print()
print("Login Success") print("Login Success")
return "Success" return "Success"
@@ -313,6 +335,87 @@ def login():
# BLOCK 3B: FILE UTILITIES # BLOCK 3B: FILE UTILITIES
# ============================================================================ # ============================================================================
def ask_on_retry_exhausted():
"""Asks the user what to do when all API retry batches are exhausted."""
global on_retry_exhausted
choice = questionary.select(
"On retry exhausted :",
choices=[
"Ask (interactive prompt)",
"Ignore (return None and continue)",
"Abort (stop script)"
]
).ask()
if choice is None or choice == "Ask (interactive prompt)":
on_retry_exhausted = "ask"
elif choice == "Ignore (return None and continue)":
on_retry_exhausted = "ignore"
else:
on_retry_exhausted = "abort"
def wait_for_scheduled_launch():
"""Asks the user when to start the processing and waits if needed.
Options: Immediately / In X minutes / At HH:MM
"""
choice = questionary.select(
"When to start processing ?",
choices=["Immediately", "In X minutes", "At HH:MM"]
).ask()
if choice is None or choice == "Immediately":
return
if choice == "In X minutes":
minutes_str = questionary.text(
"Number of minutes :",
validate=lambda x: x.isdigit() and int(x) > 0
).ask()
if not minutes_str:
return
target_time = datetime.now() + timedelta(minutes=int(minutes_str))
else: # "At HH:MM"
time_str = questionary.text(
"Start time (HH:MM) :",
validate=lambda x: bool(re.match(r'^\d{2}:\d{2}$', x)) and
0 <= int(x.split(':')[0]) <= 23 and
0 <= int(x.split(':')[1]) <= 59
).ask()
if not time_str:
return
now = datetime.now()
h, m = int(time_str.split(':')[0]), int(time_str.split(':')[1])
target_time = now.replace(hour=h, minute=m, second=0, microsecond=0)
if target_time <= now:
console.print("[yellow]⚠ Specified time is already past. Starting immediately.[/yellow]")
return
print()
try:
while True:
remaining = target_time - datetime.now()
if remaining.total_seconds() <= 0:
break
total_secs = int(remaining.total_seconds())
h = total_secs // 3600
m = (total_secs % 3600) // 60
s = total_secs % 60
target_str = target_time.strftime('%H:%M:%S')
print(f"\r Starting in {h:02d}:{m:02d}:{s:02d}... (at {target_str}) — Ctrl+C to cancel ",
end="", flush=True)
sleep(1)
# Flush keyboard buffer to prevent stray keystrokes from polluting subsequent prompts
while msvcrt.kbhit():
msvcrt.getwch()
print()
console.print("[green]✓ Starting processing.[/green]")
except KeyboardInterrupt:
print()
console.print("[bold red]Launch cancelled by user.[/bold red]")
raise SystemExit(0)
def load_json_file(filename): def load_json_file(filename):
""" """
Load a JSON file from disk. Load a JSON file from disk.
@@ -1236,6 +1339,12 @@ def main():
number_of_threads = int((questionary.text("Number of threads :", default="12", number_of_threads = int((questionary.text("Number of threads :", default="12",
validate=lambda x: x.isdigit() and 0 < int(x) <= MAX_THREADS).ask())) validate=lambda x: x.isdigit() and 0 < int(x) <= MAX_THREADS).ask()))
print()
ask_on_retry_exhausted()
print()
wait_for_scheduled_launch()
print() print()
load_inclusions_mapping_config() load_inclusions_mapping_config()
load_organizations_mapping_config() load_organizations_mapping_config()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,704 +0,0 @@
[
{
"id": "5703b3d6-e415-40b0-90ea-b168835fd720",
"name": "HOPITAL PRIVE NATECIA",
"Center_Name": "Hôpital Privé Natécia",
"patients_count": 169,
"preincluded_count": 0,
"included_count": 167,
"prematurely_terminated_count": 2
},
{
"id": "1de71a30-840b-4c4b-84fc-281ce1b4a5e1",
"name": "SANTE ATLANTIQUE",
"Center_Name": "Clinique Santé Atlantique",
"patients_count": 159,
"preincluded_count": 1,
"included_count": 157,
"prematurely_terminated_count": 1
},
{
"id": "5e6d7afa-6532-495f-a84a-34f644aeaa0f",
"name": "CLINIQUE BELLEDONNE",
"Center_Name": "Clinique Belledonne",
"patients_count": 158,
"preincluded_count": 4,
"included_count": 153,
"prematurely_terminated_count": 1
},
{
"id": "026a6d39-552f-44b9-8a2d-1ecd705f9e08",
"name": "HOPITAL AMERICAIN",
"Center_Name": "Hôpital Américain de Paris",
"patients_count": 158,
"preincluded_count": 1,
"included_count": 157,
"prematurely_terminated_count": 0
},
{
"id": "bf0f96c1-8bbc-4f2c-b360-4a5b27995a12",
"name": "SA CLINIQUE TIVOLI-DUCOS",
"Center_Name": "Clinique TIVOLI",
"patients_count": 155,
"preincluded_count": 1,
"included_count": 154,
"prematurely_terminated_count": 0
},
{
"id": "aba63d11-0dd7-40e8-a652-384c311bb358",
"name": "HOPITAL LYON SUD - HOSPICES CIVILS DE LYON",
"Center_Name": "Hôpital Lyon Sud - Hospices Civils de Lyon",
"patients_count": 127,
"preincluded_count": 0,
"included_count": 127,
"prematurely_terminated_count": 0
},
{
"id": "8488229d-f426-4bdd-923c-f638041b223c",
"name": "HOPITAL JEANNE DE FLANDRE DU CHU DE LILLE",
"Center_Name": "CHU de Lille - Hôpital Jeanne de Flandre",
"patients_count": 91,
"preincluded_count": 1,
"included_count": 90,
"prematurely_terminated_count": 0
},
{
"id": "31665f8d-0f46-44dc-931f-e3aed8879965",
"name": "HOPITAL MAISON BLANCHE CHU REIMS",
"Center_Name": "CHU de Reims - Hôpital Maison Blanche",
"patients_count": 88,
"preincluded_count": 0,
"included_count": 88,
"prematurely_terminated_count": 0
},
{
"id": "b77b301c-10fa-4eca-bb5b-51506766e158",
"name": "HOPITAL CHARLES NICOLLE CHU ROUEN",
"Center_Name": "CHU de Rouen Normandie - Hôpital Charles-Nicolle",
"patients_count": 84,
"preincluded_count": 1,
"included_count": 83,
"prematurely_terminated_count": 0
},
{
"id": "743d0a1a-7edf-4fe6-9d65-0c14363f2153",
"name": "CENTRE HOSPITALIER UNIVERSITAIRE JEAN MINJOZ BESANCON",
"Center_Name": "CHU Jean Minjoz Besançon - Pôle Mère-Femme",
"patients_count": 81,
"preincluded_count": 0,
"included_count": 81,
"prematurely_terminated_count": 0
},
{
"id": "855d7aab-9736-40b7-b9ff-dcc6438890ef",
"name": "HOPITAL CROIX-ROUSSE - HOSPICES CIVILS DE LYON",
"Center_Name": "Hôpital Croix-Rousse - Hospices Civils de Lyon",
"patients_count": 68,
"preincluded_count": 5,
"included_count": 62,
"prematurely_terminated_count": 1
},
{
"id": "74a05936-8fb6-4662-8e95-fd1c91621bf2",
"name": "GHU APHP SORBONNE UNIVERSITE SITE TENON",
"Center_Name": "GHU APHP - Hôpital Tenon",
"patients_count": 62,
"preincluded_count": 5,
"included_count": 56,
"prematurely_terminated_count": 1
},
{
"id": "76d2ebcd-5482-4c5d-8221-c94d1de7261e",
"name": "CENTRE HOSPITALIER ANNECY-GENEVOIS SITE ANNECY",
"Center_Name": "CH Annecy Genevois Site dAnnecy",
"patients_count": 60,
"preincluded_count": 0,
"included_count": 60,
"prematurely_terminated_count": 0
},
{
"id": "006740fa-696c-4ffb-8b77-7a60d0e23617",
"name": "HOPITAL PRIVÉ LE BOIS",
"Center_Name": "Hôpital Privé le Bois - Lille",
"patients_count": 60,
"preincluded_count": 1,
"included_count": 59,
"prematurely_terminated_count": 0
},
{
"id": "a4b3dfea-1220-4987-b287-f58fde1d0ee5",
"name": "CENTRE HOSPITALIER UNIVERSITAIRE COTE DE NACRE",
"Center_Name": "CHU de Caen",
"patients_count": 59,
"preincluded_count": 0,
"included_count": 59,
"prematurely_terminated_count": 0
},
{
"id": "4aef30cb-778b-409a-b6e2-898bfd91c850",
"name": "CENTRE HOSPITALIER GENERAL DE VALENCIENNES",
"Center_Name": "CH de Valenciennes",
"patients_count": 57,
"preincluded_count": 3,
"included_count": 54,
"prematurely_terminated_count": 0
},
{
"id": "f7d3526b-18d6-43af-b52c-5ca23bac798e",
"name": "CENTRE HOSPITALIER REGIONAL D ANGERS",
"Center_Name": "CHR dAngers",
"patients_count": 50,
"preincluded_count": 0,
"included_count": 50,
"prematurely_terminated_count": 0
},
{
"id": "1fd6c63b-d909-45d8-8c70-ecb12501c1d1",
"name": "HOPITAL DE HAUTEPIERRE",
"Center_Name": "CHRU Strasbourg - Hôpital de Hautepierre",
"patients_count": 44,
"preincluded_count": 2,
"included_count": 42,
"prematurely_terminated_count": 0
},
{
"id": "d17ddcc4-64db-4cf5-83c5-146f9a060254",
"name": "CENTRE HOSPITALIER DE CALAIS.",
"Center_Name": "CH de Calais",
"patients_count": 42,
"preincluded_count": 0,
"included_count": 42,
"prematurely_terminated_count": 0
},
{
"id": "f6665185-b1ae-4847-a378-652d35158cee",
"name": "CLINIQUE BELHARRA",
"Center_Name": "Clinique Belharra",
"patients_count": 40,
"preincluded_count": 0,
"included_count": 40,
"prematurely_terminated_count": 0
},
{
"id": "fe25553c-4894-4291-b303-c19d2a1c6f0f",
"name": "CHU SITE FELIX GUYON (SAINT DENIS)",
"Center_Name": "CHU la Réunion - Site Félix Guyon (SAINT DENIS)",
"patients_count": 39,
"preincluded_count": 6,
"included_count": 33,
"prematurely_terminated_count": 0
},
{
"id": "12daafee-970b-4781-9121-994d06e3a766",
"name": "CHU DE NICE HOPITAL DE L'ARCHET",
"Center_Name": "CHU Nice Archet",
"patients_count": 38,
"preincluded_count": 0,
"included_count": 38,
"prematurely_terminated_count": 0
},
{
"id": "f07a7374-d731-4fcf-86e9-2f36e5faf342",
"name": "CHU MONTPELLIER HOPITAL ARNAUD DE VILLENEUVE",
"Center_Name": "CHU Montpellier - Hôpital Arnaud de Villeneuve",
"patients_count": 38,
"preincluded_count": 0,
"included_count": 38,
"prematurely_terminated_count": 0
},
{
"id": "9c64545a-b622-4ef9-be0f-f5cc21b9cd66",
"name": "HOPITAL NORD - CHU DE GRENOBLE ALPES",
"Center_Name": "CHU de Grenoble - Hôpital Nord",
"patients_count": 36,
"preincluded_count": 0,
"included_count": 35,
"prematurely_terminated_count": 1
},
{
"id": "c03b88b5-3cd2-4336-9048-19c239baf5ec",
"name": "CHRU DE RENNES SITE HOPITAL SUD",
"Center_Name": "CHU Rennes",
"patients_count": 34,
"preincluded_count": 0,
"included_count": 34,
"prematurely_terminated_count": 0
},
{
"id": "b0ba921e-e24a-41c2-b769-a2aa108cdd58",
"name": "CENTRE HOSPITALIER LES ESCARTONS A BRIANCON",
"Center_Name": "CH des Escartons de Briançon",
"patients_count": 32,
"preincluded_count": 1,
"included_count": 31,
"prematurely_terminated_count": 0
},
{
"id": "b5f30dc5-da3f-4f8b-9a39-33f0fefb7196",
"name": "SCM RX TOULOUSE CLINIQUE PASTEUR",
"Center_Name": "Clinique Pasteur Toulouse",
"patients_count": 32,
"preincluded_count": 2,
"included_count": 30,
"prematurely_terminated_count": 0
},
{
"id": "817429dd-0d7c-4df9-ad70-2f19c205e05a",
"name": "CENTRE HOSPITALIER - FALCONAJA - BASTIA",
"Center_Name": "CH Bastia",
"patients_count": 29,
"preincluded_count": 4,
"included_count": 25,
"prematurely_terminated_count": 0
},
{
"id": "4f943b00-9306-418a-a853-1d97dff71172",
"name": "HOPITAL EUROPEEN",
"Center_Name": "Hôpital Européen Marseille",
"patients_count": 28,
"preincluded_count": 0,
"included_count": 28,
"prematurely_terminated_count": 0
},
{
"id": "002312ec-69fb-4582-9e8f-7c266e5479d2",
"name": "HOPITAL NORD - CHU DE SAINT-ETIENNE",
"Center_Name": "CHU de Saint-Étienne - Hôpital Nord",
"patients_count": 27,
"preincluded_count": 2,
"included_count": 25,
"prematurely_terminated_count": 0
},
{
"id": "0ce39aac-6b5a-418b-8430-c4432e6cd78f",
"name": "HOPITAL DE RANGUEIL CHU TOULOUSE",
"Center_Name": "CHU de Toulouse - Hôpital Rangueil",
"patients_count": 24,
"preincluded_count": 1,
"included_count": 23,
"prematurely_terminated_count": 0
},
{
"id": "8ef8564e-836c-4c03-b4ec-8e28fa76c3c0",
"name": "HOPITAL ESTAING - CHU CLERMONT-FERRAND",
"Center_Name": "CHU Clermont-Ferrand - Site Estaing",
"patients_count": 23,
"preincluded_count": 1,
"included_count": 22,
"prematurely_terminated_count": 0
},
{
"id": "546f981f-6f7d-40c8-9b97-a1a3c46e6674",
"name": "GROUPE HOSPITALIER DE LA REGION DE MULHOUSE ET SUD ALSACE",
"Center_Name": "GHR Mulhouse Sud Alsace",
"patients_count": 20,
"preincluded_count": 0,
"included_count": 20,
"prematurely_terminated_count": 0
},
{
"id": "eb9c561d-37b6-485c-b351-9e19515cb98d",
"name": "GROUPE HOSPITALIER PELLEGRIN - CHU",
"Center_Name": "CHU de Bordeaux - GH Pellegrin",
"patients_count": 20,
"preincluded_count": 0,
"included_count": 20,
"prematurely_terminated_count": 0
},
{
"id": "d1ef2ced-0206-4725-a08c-454d71e823ec",
"name": "HOPITAL DE LA MERE ET DE L'ENFANT",
"Center_Name": "CHU Limoges - Hôpital de la Mère et de l'Enfant",
"patients_count": 20,
"preincluded_count": 0,
"included_count": 20,
"prematurely_terminated_count": 0
},
{
"id": "7f43a297-b156-4fec-8ecf-d8d008b1a1d2",
"name": "HOPITAL PRIVE DIJON BOURGOGNE",
"Center_Name": "Centre Evidens - Hôpital privé Dijon Bourgogne",
"patients_count": 19,
"preincluded_count": 4,
"included_count": 15,
"prematurely_terminated_count": 0
},
{
"id": "d767fcd0-3f4c-4cdf-9cda-b829156d2f95",
"name": "HOPITAL PRIVE SUD CORSE",
"Center_Name": "Hôpital Privé Sud Corse",
"patients_count": 18,
"preincluded_count": 0,
"included_count": 18,
"prematurely_terminated_count": 0
},
{
"id": "58d5b536-b326-4713-9137-bb6f852df0be",
"name": "CENTRE HOSPITALIER METROPOLE SAVOIE - CHAMBERY NH",
"Center_Name": "CH Métropole Savoie - Site Chambéry",
"patients_count": 16,
"preincluded_count": 0,
"included_count": 16,
"prematurely_terminated_count": 0
},
{
"id": "b4b35661-87c8-4333-bfb1-3ce4f1c77565",
"name": "CENTRE HOSPITALIER REGIONAL UNIVERSITAIRE BRETONNEAU",
"Center_Name": "CHRU Bretonneau",
"patients_count": 16,
"preincluded_count": 2,
"included_count": 14,
"prematurely_terminated_count": 0
},
{
"id": "454313d9-c624-43de-a8e3-84989d526403",
"name": "CLINIQUE MUTUALISTE LA SAGESSE RENNES",
"Center_Name": "Clinique la Sagesse - Rennes",
"patients_count": 15,
"preincluded_count": 0,
"included_count": 15,
"prematurely_terminated_count": 0
},
{
"id": "d981c078-189e-4831-a063-778733f7e582",
"name": "HOPITAL FOCH",
"Center_Name": "Hôpital Foch",
"patients_count": 15,
"preincluded_count": 1,
"included_count": 12,
"prematurely_terminated_count": 0
},
{
"id": "940c8425-fe53-45ac-a750-3e195df990e3",
"name": "HOPITAL PRIVE D'EURE ET LOIR",
"Center_Name": "Hôpital Privé d'Eure et Loir",
"patients_count": 14,
"preincluded_count": 1,
"included_count": 13,
"prematurely_terminated_count": 0
},
{
"id": "98cbbefe-920a-495a-981d-02093bd2253d",
"name": "CHU LA MILETRIE",
"Center_Name": "CHU de Poitiers La Miletrie",
"patients_count": 13,
"preincluded_count": 0,
"included_count": 13,
"prematurely_terminated_count": 0
},
{
"id": "38e9ef8a-5073-471a-a3df-14d834db2d12",
"name": "GHBS-SITE HÔPITAL DU SCORFF",
"Center_Name": "Groupe Hospitalier Bretagne Sud Lorient - GHBS - Lorient (SCORFF)",
"patients_count": 13,
"preincluded_count": 0,
"included_count": 13,
"prematurely_terminated_count": 0
},
{
"id": "6316db1a-4a90-4e45-a518-0095d63f7c36",
"name": "HOPITAL LE BOCAGE CHRU DIJON",
"Center_Name": "CHU Dijon",
"patients_count": 12,
"preincluded_count": 1,
"included_count": 10,
"prematurely_terminated_count": 1
},
{
"id": "f790c171-9523-48b6-a246-fdb26628eb6c",
"name": "CHRU NANCY - MATERNITE",
"Center_Name": "CHRU de Nancy - Maternité",
"patients_count": 11,
"preincluded_count": 1,
"included_count": 10,
"prematurely_terminated_count": 0
},
{
"id": "7b8c5362-7c7a-4d93-8b12-58b8e56020d1",
"name": "HOPITAL JACQUES MONOD CH LE HAVRE",
"Center_Name": "GH du Havre - Hôpital Jacques Monod",
"patients_count": 11,
"preincluded_count": 0,
"included_count": 11,
"prematurely_terminated_count": 0
},
{
"id": "6953af68-e30e-437f-93cf-19ed0932c350",
"name": "CHRU D'ORLEANS - HOPITAL DE LA SOURCE",
"Center_Name": "CHU d'Orléans",
"patients_count": 10,
"preincluded_count": 0,
"included_count": 10,
"prematurely_terminated_count": 0
},
{
"id": "f13560a8-3bf6-4322-bdae-332ee3bf0366",
"name": "POLYCLINIQUE JEAN VILLAR",
"Center_Name": "Polyclinique Jean Villar",
"patients_count": 10,
"preincluded_count": 0,
"included_count": 10,
"prematurely_terminated_count": 0
},
{
"id": "da67fb6e-2ccc-4994-8fde-cc2ee2a8e9ca",
"name": "GHU AP-HP UNIVERSITE PARIS SACLAY SITE KREMLIN BICETRE",
"Center_Name": "GHU APHP - Hôpital Bicêtre",
"patients_count": 9,
"preincluded_count": 0,
"included_count": 7,
"prematurely_terminated_count": 0
},
{
"id": "56f427f0-be35-493b-8049-46b747c0105e",
"name": "CHU AMIENS SUD",
"Center_Name": "CHU Amiens Sud",
"patients_count": 7,
"preincluded_count": 3,
"included_count": 4,
"prematurely_terminated_count": 0
},
{
"id": "f784ee6f-27b5-4afe-ba23-4f839d96535c",
"name": "APHM HOPITAL NORD",
"Center_Name": "APHM Hôpital Nord",
"patients_count": 5,
"preincluded_count": 0,
"included_count": 5,
"prematurely_terminated_count": 0
},
{
"id": "1ac60b10-08de-4639-9a49-67167f85844e",
"name": "CENTRE HOSPITALIER DE LENS",
"Center_Name": "CH de Lens",
"patients_count": 5,
"preincluded_count": 2,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "9ba321be-65d0-4767-9865-a547905e647e",
"name": "HOPITAL DE LA CROIX SAINT SIMON",
"Center_Name": "GH Diaconesses Croix Saint-Simon",
"patients_count": 5,
"preincluded_count": 1,
"included_count": 4,
"prematurely_terminated_count": 0
},
{
"id": "cab5b1e9-d93a-46eb-ae35-a449ea719c65",
"name": "GRAND HOSP EST FRANCILIEN MARNE LA VALLEE SITE JOSSIGNY",
"Center_Name": "Grand Hôpital de l'Est Francilien - Site de Marne-la-Vallée",
"patients_count": 4,
"preincluded_count": 0,
"included_count": 4,
"prematurely_terminated_count": 0
},
{
"id": "96519108-b0b2-4a5f-999f-cccc4e4059c9",
"name": "CHU DE NANTES SITE HOTEL DIEU HOPITAL MERE ENFANT",
"Center_Name": "CHU de Nantes - Site Hôtel Dieu Hôpital Mère Enfant",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "fe7548b7-75a1-4e13-97a9-6dc865b04b25",
"name": "CHU SITE SUD ( SAINT PIERRE)",
"Center_Name": "CHU la Réunion - Site Sud (SAINT PIERRE)",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "e68c76de-33e8-49e3-978d-c5fb408e7fd5",
"name": "CLINIQUE AXIUM",
"Center_Name": "Clinique Axium",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "af09eaa0-7e08-48e3-990c-24ca2fbc3fdc",
"name": "SCP GYNECOLOGIE RIVE GAUCHE",
"Center_Name": "SCP Gynécologie Clinique Rive Gauche",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "0466558d-077c-4a51-9d25-2e15e00fabaf",
"name": "CENTRE HOSPITALIER DE CANNES SIMONE VEIL",
"Center_Name": "CH de Cannes Simone Veil",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "aa3e8684-07e0-45d9-9cee-144df2e4b430",
"name": "CENTRE HOSPITALIER DE PAU",
"Center_Name": "CH de Pau",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "13306b61-7ea6-4d60-b89c-b0df2d9d1605",
"name": "CENTRE HOSPITALIER VICTOR PROVO ROUBAIX",
"Center_Name": "CH Victor Provo Roubaix",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "8c27716f-edfe-4a4e-9189-09f39cc64395",
"name": "CHI DE MONT DE MARSAN ET DU PAYS DES SOURCES",
"Center_Name": "CHI Mont de Marsan",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "b74c365a-fc63-4763-b57d-abb609debd3b",
"name": "CTRE HOSPITALIER INTERCOMMUNAL POISSY ST GERMAIN SITE POISSY",
"Center_Name": "CHI Poissy St Germain en Laye - Site Poissy",
"patients_count": 2,
"preincluded_count": 1,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "4d271322-7945-42e8-801b-a3b25fc570be",
"name": "GROUPE HOSPITALIER PARIS SAINT JOSEPH",
"Center_Name": "Groupe Hospitalier Paris Saint-Joseph",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "d82d64eb-a1cf-4635-a99f-23def12c7cb5",
"name": "CHRU BREST SITE HOPITAL MORVAN",
"Center_Name": "CHRU Brest - Site Hôpital Morvan",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "a47dc8c0-dfea-4a4c-9bcc-1370616ff9c8",
"name": "CHU DE MARTINIQUE SITE MFME",
"Center_Name": "CHU de Martinique - Site MFME",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "384d3b28-f33e-43a6-9043-394aa88aead7",
"name": "CLINIQUE BOUCHARD",
"Center_Name": "Clinique Bouchard - Marseille",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "0f78459f-b598-4faa-81a1-085a439e8c0e",
"name": "HOPITAUX PRIVES ROUENNAIS MATHILDE",
"Center_Name": "Hôpitaux Privés Rouennais - Mathilde",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "02e42e01-56ab-418d-95df-cb53a7ef17b3",
"name": "APHM HOPITAL DE LA CONCEPTION",
"Center_Name": "APHM Hôpital de la Conception",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "2ba1f179-425e-4d88-97a7-88a097e639ab",
"name": "CENTRE HOSPITALIER DE CAYENNE",
"Center_Name": "CHU de Guyane - Site de Cayenne",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "3e8887e1-7608-40a6-b6f5-87c6fa5a0bd0",
"name": "CENTRE HOSPITALIER DE VERSAILLES ANDRE MIGNOT",
"Center_Name": "CH de Versailles",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "6af3784d-5d57-47c3-b924-0d13008ebd88",
"name": "CENTRE HOSPITALIER UNIVERSITAIRE DE POINTE-A-PITRE",
"Center_Name": "CHU de Guadeloupe - Pointe-à-Pitre",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "aa6af654-2cf2-4714-885d-a0e40b6f6f0a",
"name": "CHR METZ - THIONVILLE - HOPITAL DE MERCY",
"Center_Name": "CHR Metz - Thionville - Hôpital de Mercy",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "8441f339-4dd3-4c8c-bd2d-7751dc7fe43b",
"name": "CLINIQUE DU TERTRE ROUGE - POLE SANTE SUD",
"Center_Name": "Clinique du Tertre Rouge - Pôle Santé Sud",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "09c785f2-3deb-4a4a-a1a8-adbca5b767d7",
"name": "GHU APHP CENTRE-UNIVERSITE PARIS CITE SITE COCHIN PORT ROYAL",
"Center_Name": "APHP Site Cochin",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "5847c4fa-4025-4303-80eb-deaa07b80c0b",
"name": "GHU APHP SORBONNE UNIVERSITE SITE PITIE SALPETRIERE",
"Center_Name": "APHP Site Pitié Salpêtriere",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "dacc94bd-89b0-4cc4-b334-f684360abbe5",
"name": "HOPITAL PRIVE D ANTONY",
"Center_Name": "Hôpital Privé d'Antony",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
}
]

View File

@@ -1,704 +0,0 @@
[
{
"id": "5703b3d6-e415-40b0-90ea-b168835fd720",
"name": "HOPITAL PRIVE NATECIA",
"Center_Name": "Hôpital Privé Natécia",
"patients_count": 169,
"preincluded_count": 0,
"included_count": 167,
"prematurely_terminated_count": 2
},
{
"id": "1de71a30-840b-4c4b-84fc-281ce1b4a5e1",
"name": "SANTE ATLANTIQUE",
"Center_Name": "Clinique Santé Atlantique",
"patients_count": 159,
"preincluded_count": 1,
"included_count": 157,
"prematurely_terminated_count": 1
},
{
"id": "5e6d7afa-6532-495f-a84a-34f644aeaa0f",
"name": "CLINIQUE BELLEDONNE",
"Center_Name": "Clinique Belledonne",
"patients_count": 158,
"preincluded_count": 4,
"included_count": 153,
"prematurely_terminated_count": 1
},
{
"id": "026a6d39-552f-44b9-8a2d-1ecd705f9e08",
"name": "HOPITAL AMERICAIN",
"Center_Name": "Hôpital Américain de Paris",
"patients_count": 158,
"preincluded_count": 1,
"included_count": 157,
"prematurely_terminated_count": 0
},
{
"id": "bf0f96c1-8bbc-4f2c-b360-4a5b27995a12",
"name": "SA CLINIQUE TIVOLI-DUCOS",
"Center_Name": "Clinique TIVOLI",
"patients_count": 155,
"preincluded_count": 1,
"included_count": 154,
"prematurely_terminated_count": 0
},
{
"id": "aba63d11-0dd7-40e8-a652-384c311bb358",
"name": "HOPITAL LYON SUD - HOSPICES CIVILS DE LYON",
"Center_Name": "Hôpital Lyon Sud - Hospices Civils de Lyon",
"patients_count": 127,
"preincluded_count": 0,
"included_count": 127,
"prematurely_terminated_count": 0
},
{
"id": "8488229d-f426-4bdd-923c-f638041b223c",
"name": "HOPITAL JEANNE DE FLANDRE DU CHU DE LILLE",
"Center_Name": "CHU de Lille - Hôpital Jeanne de Flandre",
"patients_count": 91,
"preincluded_count": 1,
"included_count": 90,
"prematurely_terminated_count": 0
},
{
"id": "31665f8d-0f46-44dc-931f-e3aed8879965",
"name": "HOPITAL MAISON BLANCHE CHU REIMS",
"Center_Name": "CHU de Reims - Hôpital Maison Blanche",
"patients_count": 88,
"preincluded_count": 0,
"included_count": 88,
"prematurely_terminated_count": 0
},
{
"id": "b77b301c-10fa-4eca-bb5b-51506766e158",
"name": "HOPITAL CHARLES NICOLLE CHU ROUEN",
"Center_Name": "CHU de Rouen Normandie - Hôpital Charles-Nicolle",
"patients_count": 84,
"preincluded_count": 1,
"included_count": 83,
"prematurely_terminated_count": 0
},
{
"id": "743d0a1a-7edf-4fe6-9d65-0c14363f2153",
"name": "CENTRE HOSPITALIER UNIVERSITAIRE JEAN MINJOZ BESANCON",
"Center_Name": "CHU Jean Minjoz Besançon - Pôle Mère-Femme",
"patients_count": 81,
"preincluded_count": 0,
"included_count": 81,
"prematurely_terminated_count": 0
},
{
"id": "855d7aab-9736-40b7-b9ff-dcc6438890ef",
"name": "HOPITAL CROIX-ROUSSE - HOSPICES CIVILS DE LYON",
"Center_Name": "Hôpital Croix-Rousse - Hospices Civils de Lyon",
"patients_count": 68,
"preincluded_count": 5,
"included_count": 62,
"prematurely_terminated_count": 1
},
{
"id": "74a05936-8fb6-4662-8e95-fd1c91621bf2",
"name": "GHU APHP SORBONNE UNIVERSITE SITE TENON",
"Center_Name": "GHU APHP - Hôpital Tenon",
"patients_count": 62,
"preincluded_count": 5,
"included_count": 56,
"prematurely_terminated_count": 1
},
{
"id": "76d2ebcd-5482-4c5d-8221-c94d1de7261e",
"name": "CENTRE HOSPITALIER ANNECY-GENEVOIS SITE ANNECY",
"Center_Name": "CH Annecy Genevois Site dAnnecy",
"patients_count": 60,
"preincluded_count": 0,
"included_count": 60,
"prematurely_terminated_count": 0
},
{
"id": "006740fa-696c-4ffb-8b77-7a60d0e23617",
"name": "HOPITAL PRIVÉ LE BOIS",
"Center_Name": "Hôpital Privé le Bois - Lille",
"patients_count": 60,
"preincluded_count": 1,
"included_count": 59,
"prematurely_terminated_count": 0
},
{
"id": "a4b3dfea-1220-4987-b287-f58fde1d0ee5",
"name": "CENTRE HOSPITALIER UNIVERSITAIRE COTE DE NACRE",
"Center_Name": "CHU de Caen",
"patients_count": 59,
"preincluded_count": 0,
"included_count": 59,
"prematurely_terminated_count": 0
},
{
"id": "4aef30cb-778b-409a-b6e2-898bfd91c850",
"name": "CENTRE HOSPITALIER GENERAL DE VALENCIENNES",
"Center_Name": "CH de Valenciennes",
"patients_count": 57,
"preincluded_count": 3,
"included_count": 54,
"prematurely_terminated_count": 0
},
{
"id": "f7d3526b-18d6-43af-b52c-5ca23bac798e",
"name": "CENTRE HOSPITALIER REGIONAL D ANGERS",
"Center_Name": "CHR dAngers",
"patients_count": 50,
"preincluded_count": 0,
"included_count": 50,
"prematurely_terminated_count": 0
},
{
"id": "1fd6c63b-d909-45d8-8c70-ecb12501c1d1",
"name": "HOPITAL DE HAUTEPIERRE",
"Center_Name": "CHRU Strasbourg - Hôpital de Hautepierre",
"patients_count": 44,
"preincluded_count": 2,
"included_count": 42,
"prematurely_terminated_count": 0
},
{
"id": "d17ddcc4-64db-4cf5-83c5-146f9a060254",
"name": "CENTRE HOSPITALIER DE CALAIS.",
"Center_Name": "CH de Calais",
"patients_count": 42,
"preincluded_count": 0,
"included_count": 42,
"prematurely_terminated_count": 0
},
{
"id": "f6665185-b1ae-4847-a378-652d35158cee",
"name": "CLINIQUE BELHARRA",
"Center_Name": "Clinique Belharra",
"patients_count": 40,
"preincluded_count": 0,
"included_count": 40,
"prematurely_terminated_count": 0
},
{
"id": "fe25553c-4894-4291-b303-c19d2a1c6f0f",
"name": "CHU SITE FELIX GUYON (SAINT DENIS)",
"Center_Name": "CHU la Réunion - Site Félix Guyon (SAINT DENIS)",
"patients_count": 39,
"preincluded_count": 6,
"included_count": 33,
"prematurely_terminated_count": 0
},
{
"id": "12daafee-970b-4781-9121-994d06e3a766",
"name": "CHU DE NICE HOPITAL DE L'ARCHET",
"Center_Name": "CHU Nice Archet",
"patients_count": 38,
"preincluded_count": 0,
"included_count": 38,
"prematurely_terminated_count": 0
},
{
"id": "f07a7374-d731-4fcf-86e9-2f36e5faf342",
"name": "CHU MONTPELLIER HOPITAL ARNAUD DE VILLENEUVE",
"Center_Name": "CHU Montpellier - Hôpital Arnaud de Villeneuve",
"patients_count": 38,
"preincluded_count": 0,
"included_count": 38,
"prematurely_terminated_count": 0
},
{
"id": "9c64545a-b622-4ef9-be0f-f5cc21b9cd66",
"name": "HOPITAL NORD - CHU DE GRENOBLE ALPES",
"Center_Name": "CHU de Grenoble - Hôpital Nord",
"patients_count": 36,
"preincluded_count": 0,
"included_count": 35,
"prematurely_terminated_count": 1
},
{
"id": "c03b88b5-3cd2-4336-9048-19c239baf5ec",
"name": "CHRU DE RENNES SITE HOPITAL SUD",
"Center_Name": "CHU Rennes",
"patients_count": 34,
"preincluded_count": 0,
"included_count": 34,
"prematurely_terminated_count": 0
},
{
"id": "b0ba921e-e24a-41c2-b769-a2aa108cdd58",
"name": "CENTRE HOSPITALIER LES ESCARTONS A BRIANCON",
"Center_Name": "CH des Escartons de Briançon",
"patients_count": 32,
"preincluded_count": 1,
"included_count": 31,
"prematurely_terminated_count": 0
},
{
"id": "b5f30dc5-da3f-4f8b-9a39-33f0fefb7196",
"name": "SCM RX TOULOUSE CLINIQUE PASTEUR",
"Center_Name": "Clinique Pasteur Toulouse",
"patients_count": 32,
"preincluded_count": 2,
"included_count": 30,
"prematurely_terminated_count": 0
},
{
"id": "817429dd-0d7c-4df9-ad70-2f19c205e05a",
"name": "CENTRE HOSPITALIER - FALCONAJA - BASTIA",
"Center_Name": "CH Bastia",
"patients_count": 29,
"preincluded_count": 4,
"included_count": 25,
"prematurely_terminated_count": 0
},
{
"id": "4f943b00-9306-418a-a853-1d97dff71172",
"name": "HOPITAL EUROPEEN",
"Center_Name": "Hôpital Européen Marseille",
"patients_count": 28,
"preincluded_count": 0,
"included_count": 28,
"prematurely_terminated_count": 0
},
{
"id": "002312ec-69fb-4582-9e8f-7c266e5479d2",
"name": "HOPITAL NORD - CHU DE SAINT-ETIENNE",
"Center_Name": "CHU de Saint-Étienne - Hôpital Nord",
"patients_count": 27,
"preincluded_count": 2,
"included_count": 25,
"prematurely_terminated_count": 0
},
{
"id": "0ce39aac-6b5a-418b-8430-c4432e6cd78f",
"name": "HOPITAL DE RANGUEIL CHU TOULOUSE",
"Center_Name": "CHU de Toulouse - Hôpital Rangueil",
"patients_count": 24,
"preincluded_count": 1,
"included_count": 23,
"prematurely_terminated_count": 0
},
{
"id": "8ef8564e-836c-4c03-b4ec-8e28fa76c3c0",
"name": "HOPITAL ESTAING - CHU CLERMONT-FERRAND",
"Center_Name": "CHU Clermont-Ferrand - Site Estaing",
"patients_count": 23,
"preincluded_count": 1,
"included_count": 22,
"prematurely_terminated_count": 0
},
{
"id": "546f981f-6f7d-40c8-9b97-a1a3c46e6674",
"name": "GROUPE HOSPITALIER DE LA REGION DE MULHOUSE ET SUD ALSACE",
"Center_Name": "GHR Mulhouse Sud Alsace",
"patients_count": 20,
"preincluded_count": 0,
"included_count": 20,
"prematurely_terminated_count": 0
},
{
"id": "eb9c561d-37b6-485c-b351-9e19515cb98d",
"name": "GROUPE HOSPITALIER PELLEGRIN - CHU",
"Center_Name": "CHU de Bordeaux - GH Pellegrin",
"patients_count": 20,
"preincluded_count": 0,
"included_count": 20,
"prematurely_terminated_count": 0
},
{
"id": "d1ef2ced-0206-4725-a08c-454d71e823ec",
"name": "HOPITAL DE LA MERE ET DE L'ENFANT",
"Center_Name": "CHU Limoges - Hôpital de la Mère et de l'Enfant",
"patients_count": 20,
"preincluded_count": 0,
"included_count": 20,
"prematurely_terminated_count": 0
},
{
"id": "7f43a297-b156-4fec-8ecf-d8d008b1a1d2",
"name": "HOPITAL PRIVE DIJON BOURGOGNE",
"Center_Name": "Centre Evidens - Hôpital privé Dijon Bourgogne",
"patients_count": 19,
"preincluded_count": 4,
"included_count": 15,
"prematurely_terminated_count": 0
},
{
"id": "d767fcd0-3f4c-4cdf-9cda-b829156d2f95",
"name": "HOPITAL PRIVE SUD CORSE",
"Center_Name": "Hôpital Privé Sud Corse",
"patients_count": 18,
"preincluded_count": 0,
"included_count": 18,
"prematurely_terminated_count": 0
},
{
"id": "58d5b536-b326-4713-9137-bb6f852df0be",
"name": "CENTRE HOSPITALIER METROPOLE SAVOIE - CHAMBERY NH",
"Center_Name": "CH Métropole Savoie - Site Chambéry",
"patients_count": 16,
"preincluded_count": 0,
"included_count": 16,
"prematurely_terminated_count": 0
},
{
"id": "b4b35661-87c8-4333-bfb1-3ce4f1c77565",
"name": "CENTRE HOSPITALIER REGIONAL UNIVERSITAIRE BRETONNEAU",
"Center_Name": "CHRU Bretonneau",
"patients_count": 16,
"preincluded_count": 2,
"included_count": 14,
"prematurely_terminated_count": 0
},
{
"id": "454313d9-c624-43de-a8e3-84989d526403",
"name": "CLINIQUE MUTUALISTE LA SAGESSE RENNES",
"Center_Name": "Clinique la Sagesse - Rennes",
"patients_count": 15,
"preincluded_count": 0,
"included_count": 15,
"prematurely_terminated_count": 0
},
{
"id": "d981c078-189e-4831-a063-778733f7e582",
"name": "HOPITAL FOCH",
"Center_Name": "Hôpital Foch",
"patients_count": 15,
"preincluded_count": 1,
"included_count": 12,
"prematurely_terminated_count": 0
},
{
"id": "940c8425-fe53-45ac-a750-3e195df990e3",
"name": "HOPITAL PRIVE D'EURE ET LOIR",
"Center_Name": "Hôpital Privé d'Eure et Loir",
"patients_count": 14,
"preincluded_count": 1,
"included_count": 13,
"prematurely_terminated_count": 0
},
{
"id": "98cbbefe-920a-495a-981d-02093bd2253d",
"name": "CHU LA MILETRIE",
"Center_Name": "CHU de Poitiers La Miletrie",
"patients_count": 13,
"preincluded_count": 0,
"included_count": 13,
"prematurely_terminated_count": 0
},
{
"id": "38e9ef8a-5073-471a-a3df-14d834db2d12",
"name": "GHBS-SITE HÔPITAL DU SCORFF",
"Center_Name": "Groupe Hospitalier Bretagne Sud Lorient - GHBS - Lorient (SCORFF)",
"patients_count": 13,
"preincluded_count": 0,
"included_count": 13,
"prematurely_terminated_count": 0
},
{
"id": "6316db1a-4a90-4e45-a518-0095d63f7c36",
"name": "HOPITAL LE BOCAGE CHRU DIJON",
"Center_Name": "CHU Dijon",
"patients_count": 12,
"preincluded_count": 1,
"included_count": 10,
"prematurely_terminated_count": 1
},
{
"id": "f790c171-9523-48b6-a246-fdb26628eb6c",
"name": "CHRU NANCY - MATERNITE",
"Center_Name": "CHRU de Nancy - Maternité",
"patients_count": 11,
"preincluded_count": 1,
"included_count": 10,
"prematurely_terminated_count": 0
},
{
"id": "7b8c5362-7c7a-4d93-8b12-58b8e56020d1",
"name": "HOPITAL JACQUES MONOD CH LE HAVRE",
"Center_Name": "GH du Havre - Hôpital Jacques Monod",
"patients_count": 11,
"preincluded_count": 0,
"included_count": 11,
"prematurely_terminated_count": 0
},
{
"id": "6953af68-e30e-437f-93cf-19ed0932c350",
"name": "CHRU D'ORLEANS - HOPITAL DE LA SOURCE",
"Center_Name": "CHU d'Orléans",
"patients_count": 10,
"preincluded_count": 0,
"included_count": 10,
"prematurely_terminated_count": 0
},
{
"id": "f13560a8-3bf6-4322-bdae-332ee3bf0366",
"name": "POLYCLINIQUE JEAN VILLAR",
"Center_Name": "Polyclinique Jean Villar",
"patients_count": 10,
"preincluded_count": 0,
"included_count": 10,
"prematurely_terminated_count": 0
},
{
"id": "da67fb6e-2ccc-4994-8fde-cc2ee2a8e9ca",
"name": "GHU AP-HP UNIVERSITE PARIS SACLAY SITE KREMLIN BICETRE",
"Center_Name": "GHU APHP - Hôpital Bicêtre",
"patients_count": 9,
"preincluded_count": 0,
"included_count": 7,
"prematurely_terminated_count": 0
},
{
"id": "56f427f0-be35-493b-8049-46b747c0105e",
"name": "CHU AMIENS SUD",
"Center_Name": "CHU Amiens Sud",
"patients_count": 7,
"preincluded_count": 3,
"included_count": 4,
"prematurely_terminated_count": 0
},
{
"id": "f784ee6f-27b5-4afe-ba23-4f839d96535c",
"name": "APHM HOPITAL NORD",
"Center_Name": "APHM Hôpital Nord",
"patients_count": 5,
"preincluded_count": 0,
"included_count": 5,
"prematurely_terminated_count": 0
},
{
"id": "1ac60b10-08de-4639-9a49-67167f85844e",
"name": "CENTRE HOSPITALIER DE LENS",
"Center_Name": "CH de Lens",
"patients_count": 5,
"preincluded_count": 2,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "9ba321be-65d0-4767-9865-a547905e647e",
"name": "HOPITAL DE LA CROIX SAINT SIMON",
"Center_Name": "GH Diaconesses Croix Saint-Simon",
"patients_count": 5,
"preincluded_count": 1,
"included_count": 4,
"prematurely_terminated_count": 0
},
{
"id": "cab5b1e9-d93a-46eb-ae35-a449ea719c65",
"name": "GRAND HOSP EST FRANCILIEN MARNE LA VALLEE SITE JOSSIGNY",
"Center_Name": "Grand Hôpital de l'Est Francilien - Site de Marne-la-Vallée",
"patients_count": 4,
"preincluded_count": 0,
"included_count": 4,
"prematurely_terminated_count": 0
},
{
"id": "96519108-b0b2-4a5f-999f-cccc4e4059c9",
"name": "CHU DE NANTES SITE HOTEL DIEU HOPITAL MERE ENFANT",
"Center_Name": "CHU de Nantes - Site Hôtel Dieu Hôpital Mère Enfant",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "fe7548b7-75a1-4e13-97a9-6dc865b04b25",
"name": "CHU SITE SUD ( SAINT PIERRE)",
"Center_Name": "CHU la Réunion - Site Sud (SAINT PIERRE)",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "e68c76de-33e8-49e3-978d-c5fb408e7fd5",
"name": "CLINIQUE AXIUM",
"Center_Name": "Clinique Axium",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "af09eaa0-7e08-48e3-990c-24ca2fbc3fdc",
"name": "SCP GYNECOLOGIE RIVE GAUCHE",
"Center_Name": "SCP Gynécologie Clinique Rive Gauche",
"patients_count": 3,
"preincluded_count": 0,
"included_count": 3,
"prematurely_terminated_count": 0
},
{
"id": "0466558d-077c-4a51-9d25-2e15e00fabaf",
"name": "CENTRE HOSPITALIER DE CANNES SIMONE VEIL",
"Center_Name": "CH de Cannes Simone Veil",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "aa3e8684-07e0-45d9-9cee-144df2e4b430",
"name": "CENTRE HOSPITALIER DE PAU",
"Center_Name": "CH de Pau",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "13306b61-7ea6-4d60-b89c-b0df2d9d1605",
"name": "CENTRE HOSPITALIER VICTOR PROVO ROUBAIX",
"Center_Name": "CH Victor Provo Roubaix",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "8c27716f-edfe-4a4e-9189-09f39cc64395",
"name": "CHI DE MONT DE MARSAN ET DU PAYS DES SOURCES",
"Center_Name": "CHI Mont de Marsan",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "b74c365a-fc63-4763-b57d-abb609debd3b",
"name": "CTRE HOSPITALIER INTERCOMMUNAL POISSY ST GERMAIN SITE POISSY",
"Center_Name": "CHI Poissy St Germain en Laye - Site Poissy",
"patients_count": 2,
"preincluded_count": 1,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "4d271322-7945-42e8-801b-a3b25fc570be",
"name": "GROUPE HOSPITALIER PARIS SAINT JOSEPH",
"Center_Name": "Groupe Hospitalier Paris Saint-Joseph",
"patients_count": 2,
"preincluded_count": 0,
"included_count": 2,
"prematurely_terminated_count": 0
},
{
"id": "d82d64eb-a1cf-4635-a99f-23def12c7cb5",
"name": "CHRU BREST SITE HOPITAL MORVAN",
"Center_Name": "CHRU Brest - Site Hôpital Morvan",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "a47dc8c0-dfea-4a4c-9bcc-1370616ff9c8",
"name": "CHU DE MARTINIQUE SITE MFME",
"Center_Name": "CHU de Martinique - Site MFME",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "384d3b28-f33e-43a6-9043-394aa88aead7",
"name": "CLINIQUE BOUCHARD",
"Center_Name": "Clinique Bouchard - Marseille",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "0f78459f-b598-4faa-81a1-085a439e8c0e",
"name": "HOPITAUX PRIVES ROUENNAIS MATHILDE",
"Center_Name": "Hôpitaux Privés Rouennais - Mathilde",
"patients_count": 1,
"preincluded_count": 0,
"included_count": 1,
"prematurely_terminated_count": 0
},
{
"id": "02e42e01-56ab-418d-95df-cb53a7ef17b3",
"name": "APHM HOPITAL DE LA CONCEPTION",
"Center_Name": "APHM Hôpital de la Conception",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "2ba1f179-425e-4d88-97a7-88a097e639ab",
"name": "CENTRE HOSPITALIER DE CAYENNE",
"Center_Name": "CHU de Guyane - Site de Cayenne",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "3e8887e1-7608-40a6-b6f5-87c6fa5a0bd0",
"name": "CENTRE HOSPITALIER DE VERSAILLES ANDRE MIGNOT",
"Center_Name": "CH de Versailles",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "6af3784d-5d57-47c3-b924-0d13008ebd88",
"name": "CENTRE HOSPITALIER UNIVERSITAIRE DE POINTE-A-PITRE",
"Center_Name": "CHU de Guadeloupe - Pointe-à-Pitre",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "aa6af654-2cf2-4714-885d-a0e40b6f6f0a",
"name": "CHR METZ - THIONVILLE - HOPITAL DE MERCY",
"Center_Name": "CHR Metz - Thionville - Hôpital de Mercy",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "8441f339-4dd3-4c8c-bd2d-7751dc7fe43b",
"name": "CLINIQUE DU TERTRE ROUGE - POLE SANTE SUD",
"Center_Name": "Clinique du Tertre Rouge - Pôle Santé Sud",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "09c785f2-3deb-4a4a-a1a8-adbca5b767d7",
"name": "GHU APHP CENTRE-UNIVERSITE PARIS CITE SITE COCHIN PORT ROYAL",
"Center_Name": "APHP Site Cochin",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "5847c4fa-4025-4303-80eb-deaa07b80c0b",
"name": "GHU APHP SORBONNE UNIVERSITE SITE PITIE SALPETRIERE",
"Center_Name": "APHP Site Pitié Salpêtriere",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
},
{
"id": "dacc94bd-89b0-4cc4-b334-f684360abbe5",
"name": "HOPITAL PRIVE D ANTONY",
"Center_Name": "Hôpital Privé d'Antony",
"patients_count": 0,
"preincluded_count": 0,
"included_count": 0,
"prematurely_terminated_count": 0
}
]