Я разрабатываю проект Django с приложением рандомизации для клинических испытаний.
По сути, пользователь будет рандомизировать пациента, и лечение будет назначено на основе таблицы рандомизации, а также этой таблицы и двух других таблиц. обновляться на основе данных рандомизации.
Мой «страх» теряется при подключении к inte rnet во время рандомизации и особенно при обновлении таблиц.
Какая практика полезна для управления этими случаями?
Я должен быть уверен, что все 3 таблицы обновлены.
До сих пор, когда пользователь перенаправляется на страницу подтверждения, это означает, что весь процесс завершен. Но если inte rnet соединение потеряно во время отправки форм randomization_edit, это не будет иметь место ...
Спасибо за советы.
views.py
@login_required
@permission_required('randomization.can_randomize')
def randomisation_edit(request):
if request.method == "POST":
form = RandomisationForm(request, data=request.POST or None)
if form.is_valid():
randomisation = form.save()
# randomisation
rand = Randomiser(randomisation.ran_num, request.session.get('selected_site'),randomisation.ran_vih, randomisation.ran_sta) # rand = Randomiser(randomisation.ran_num, randomisation.ran_vih, randomisation.ran_sta)
# Mise à jour de la base de données -> Patient code pour rendre indisponible la ligne
# pour une prochaine randomisation
# ListeRandomisation
# 1.Récupération de la ligne dans la liste de rando
bras = rand['bras']
# 2.Mise à jour de la ligne dans la liste de rando
patient = ListeRandomisation.objects.get(ran_ide = bras)
patient.pat = randomisation.ran_num # pat
patient.save()
# Medicament
# 1.Récupération de la ligne dans la liste de correspondance médicament
medicament = rand['medicament']
# 2.Mise à jour de la ligne dans la liste de correspondance médicament
medicament = Medicament.objects.get(med_ide = medicament)
medicament.pat = randomisation.ran_num # pat
medicament.save()
# mise à jour de la variable de session can_randomize
request.session['can_randomize'] = is_randomizable(medicament.pat[0:3], request.session.get('selected_site')) # request.session['can_randomize'] = is_randomizable(medicament.ran_dis)
# Mise à jour de la table Randomisation avec le bras et le numéro de boite attribués
randomisation.ran_bra = patient.ran_bra
randomisation.ran_med = medicament.med_num
randomisation.ran_log_dat = datetime.now()
randomisation.ran_log = request.user.username
randomisation.ran_log_sit = request.session['selected_site'] # gestion des patients pré-inclus dans un site et randomisé dans un autre centre
randomisation.save()
return redirect('randomization:confirmation', pk = randomisation.pk)
else:
form = RandomisationForm(request)
return render(request, 'randomization/randomisation_edit.html', {'form': form})
@login_required
def confirmation(request, pk):
# Vérifier si l'utilisateur vient de cette page (gestion du retour arrière via la fleche navigateur)
request.session['visited'] = True
# print(request.session.get('visited'))
# Récupération des informations à afficher sur le formulaire de confirmation
randomization = Randomisation.objects.get(pk = pk)
pat = randomization.ran_num
sta = randomization.ran_vih
sev = randomization.ran_sta
medicament = Medicament.objects.get(med_num = randomization.ran_med) # récupération de l'identifiant ligne correspondant au code lot
# envoie d'un email de confirmation
if randomization.ran_bra == 1 or randomization.ran_bra == 2:
strategie = 1 # 'WHO Standard TBM treatment'
else:
strategie = 2 # 'Intensified TBM treatment'
email('randomisation',pat,strategie,medicament.med_num,'')
return render(request, 'randomization/confirmation.html', {'randomization': randomization,'medicament': medicament})