Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########## views.py
- def edit_patient(request, id): # Making Update to a Patient
- qs = Visits.objects.filter(patient=id).order_by('-id')
- ### we will explain the next 2 lines later on the (Django Egypt Group)
- table = VisitsTable(qs, exclude='patient, addpresent')
- table.paginate(page=request.GET.get("page", 1), per_page=10)
- query = Patients.objects.get(id=id) # get(birth_date=birth_date)
- patient = Patients.objects.values('id').filter(id=id).first()
- barcode = Patients.objects.values('barcode').filter(id=id).first()
- # patient = Patients.objects.filter(id=id)
- patient_id = patient['id']
- bar = barcode['barcode']
- # print(query, patient)
- match_pasthist = PastHistory.objects.filter(patient=id).exists()
- form = PatientsForm(request.POST or None, request.FILES or None, instance=query)
- if form.is_valid():
- barcode_value = request.POST.get('barurl')
- if barcode_value == None or barcode_value == '':
- messages.success(request, 'Create barcode without value is not valid')
- elif barcode_value != None:
- qr = pyqrcode.create(barcode_value)
- name = request.POST.get('name')
- split_name = name.split()
- img_name = '-'.join(split_name)
- db_name = Patients.objects.get(id=id)
- file_path = 'media_root/patients/' + str(img_name) + '.png'
- if os.path.exists(file_path):
- os.remove(file_path)
- qr.png('media_root/patients/' + str(img_name) + '.png', scale=8)
- save_form = form.save(commit=False)
- save_form.barimg = 'patients/' + str(img_name) + '.png'
- save_form.barurl = barcode_value
- save_form.save()
- patient_id = save_form.id
- name = save_form.name
- card = save_form.cardid
- dup_name = Patients.objects\
- .values('name')\
- .annotate(ncount=Count('name'))\
- .filter(name=name, ncount__gt=1)
- records = Patients.objects\
- .filter(name__in=[item['name'] for item in dup_name])
- # print('rec_edit = '+ str(records) + str(name))#(dup_name, records)
- rec = [item.name for item in records]
- reco = any(rec.count(element) > 1 for element in rec)
- # print('patname= '+str(name), 'rec_edit= '+str(rec), 'dupname_edit= ' +str(dup_name),reco)
- # check duplicate for cardid
- dup_num = Patients.objects \
- .values('cardid') \
- .annotate(bcount=Count('cardid')) \
- .filter(cardid=card, bcount__gt=1)
- records_num = Patients.objects.filter(cardid__in=[item['cardid'] for item in dup_num])
- # print('recnum_edit = '+ str(records_num) + str(num))#(dup_name, records)
- rec_num = [item.cardid for item in records_num]
- reco_num = any(rec_num.count(element) > 1 for element in rec_num)
- # print(rec_num, 'reco_num= ' + str(reco_num))
- if reco or reco_num:
- if reco:
- messages.error(request, 'Patient (' +str(name)+ ') is already exists change the name ..!')
- Patients.objects.filter(id=patient_id).update(name=db_name.name)
- return redirect(reverse('patientdata:edit_patient', kwargs={'id': id}))
- elif reco_num:
- messages.error(request, 'Card ID is already exists !, It must not be duplicated')
- return redirect(reverse('patientdata:edit_patient', kwargs={'id':id}))
- else:
- messages.success(request, 'Edit changes done successfully')
- return redirect(reverse('patientdata:edit_patient', kwargs={'id':id}))
- # return redirect(reverse('patientdata:table_patient'))
- elif not os.path.exists(file_path):
- qr.png('media_root/patients/' + str(img_name) + '.png', scale=8)
- save_form = form.save(commit=False)
- save_form.barimg = 'patients/' + str(img_name) + '.png'
- save_form.barurl = barcode_value
- save_form.save()
- name = save_form.name
- card = save_form.cardid
- dup_name = Patients.objects\
- .values('name')\
- .annotate(ncount=Count('name'))\
- .filter(name=name, ncount__gt=1)
- records = Patients.objects\
- .filter(name__in=[item['name'] for item in dup_name])
- # print('rec_edit = '+ str(records) + str(name))#(dup_name, records)
- rec = [item.name for item in records]
- reco = any(rec.count(element) > 1 for element in rec)
- # print('patname= '+str(name), 'rec_edit= '+str(rec), 'dupname_edit= ' +str(dup_name),reco)
- # check duplicate for cardid
- dup_num = Patients.objects \
- .values('cardid') \
- .annotate(bcount=Count('cardid')) \
- .filter(cardid=card, bcount__gt=1)
- records_num = Patients.objects.filter(cardid__in=[item['cardid'] for item in dup_num])
- # print('recnum_edit = '+ str(records_num) + str(num))#(dup_name, records)
- rec_num = [item.cardid for item in records_num]
- reco_num = any(rec_num.count(element) > 1 for element in rec_num)
- # print(rec_num, 'reco_num= ' + str(reco_num))
- if reco or reco_num:
- if reco:
- messages.success(request, 'Patient (' +str(name)+ ') is already exists change the name ..!')
- return redirect(reverse('patientdata:edit_patient', kwargs={'id': id}))
- elif reco_num:
- messages.success(request, 'Card ID is already exists !, It must not be duplicated')
- return redirect(reverse('patientdata:edit_patient', kwargs={'id':id}))
- else:
- messages.success(request, 'Edit changes done successfully')
- return redirect(reverse('patientdata:edit_patient', kwargs={'id':id}))
- # return redirect(reverse('patientdata:table_patient'))
- context = {
- 'patient': patient,
- 'patient_id': patient_id,
- 'editpatform': form,
- 'query': query,
- 'barcode': bar,
- 'match_pasthist': match_pasthist,
- 'patient_visits_table':table,
- }
- return render(request, 'patientdata/edit_patient.html', context)
- def patient_details(request, barcode):
- qs = Patients.objects.get(barcode=barcode)
- patient = Patients.objects.get(id=qs.id)
- visit_table = VisitsTable(Visits.objects.filter(patient=qs.id), exclude='patient,diagnosis,amount,addpresent,')
- visit_table.paginate(page=request.GET.get("page", 1), per_page=5)
- sql_views = RawSQL('''
- ''')
- # raw_query =
- qs_patient = Patients.objects.filter(barcode=barcode)
- qs_visit = Visits.objects.filter(patient__in=qs_patient)
- qs_past = PastHistory.objects.filter(patient=qs_patient[0])
- qs_present = PresentHistory.objects.filter(patient=qs_patient[0], visit=qs_visit[3])
- print(qs_patient[0],qs_visit, qs_visit[4], qs_past, qs_present)
- context = {
- 'qs': qs,
- 'patient': patient,
- 'visit_table': visit_table,
- }
- return render(request, 'patientdata/patient_details.html', context)
- ################## edit_patient.html
- {% extends 'index.html' %}
- {% load static %}
- {% load render_table from django_tables2 %}
- {% load widget_tweaks %}
- <!-- -->
- {% block content %}
- <div class="container" style="background-color: white;" id="editPatient">
- <article class="message is-{{ message.tags }}">
- <div class="message-body alert {{ message.tags }}" style="color: red;" role="alert">
- {{ editpatform.non_field_errors }}
- </div>
- </article>
- <solid>
- <h1 style="color:black">Edit Patient</h1>
- </solid>
- <hr>
- <div class="container">
- <a class="button is-dark" href="{% url 'visits:pass_patient_id' patient_id %}" role="button">
- New Visit</a>
- <a class="button is-dark" href="{% url 'patientdata:save_patient' %}" role="button">
- New Patient</a>
- </div>
- <hr>
- <br><br>
- <form enctype="multipart/form-data" method="POST" id="edit-pat-form">{% csrf_token %}
- <div class="float-left" style="background-color:transparent;height: 100%; width: 35%;" id="left-editpat-div">
- {{editpatform.name.label_tag}} {{editpatform.name}} <br>
- {{editpatform.address.label_tag}} {{editpatform.address}}
- <br>
- {{editpatform.birth_date.label_tag}}
- {% render_field editpatform.birth_date v-model="dob" id="dob" %} <br>
- {{editpatform.age.label_tag}}
- {% render_field editpatform.age ::value="getAge" id="age" %} <br>
- {{editpatform.phone.label_tag}} {{editpatform.phone}} <br>
- {{editpatform.mobile.label_tag}} {{editpatform.mobile}} <br>
- {{editpatform.cardid.label_tag}}
- {% render_field editpatform.cardid v-model="cardid" v-on::change="cardValue" id="cardid" %} <br>
- {{editpatform.barcode.label_tag.hidden }}
- {% render_field editpatform.barcode ::value="barcodeChanged + cardValue" hidden="true" %} <br>
- {% render_field editpatform.barurl ::value="urlChanged" hidden="true" %}
- {% if query.barimg %}
- <div>
- <a href="{% url 'patientdata:patient_details' barcode %}">
- <img class="image" src="{{ query.barimg.url }}">
- </a>
- </div> <br>
- {% endif %}
- <br>
- <button type="submit" class="button is-primary">Update</button>
- <hr>
- </div>
- ### we will explain (how to make a designed table by django_tables2) later on the (Django Egypt Group)
- <div class="float-right" style="float:right; height: 100%; width: 55%;background-color:white; border-style: outset; border-
- radius: 20px; border-color: #aab5af; box-shadow: 2px 2px 4px 4px grey;" id="edit-pat-table-div">
- {% render_table patient_visits_table %}
- </div>
- </form>
- </div>
- {% endblock %}
- {% block scripts %}
- <script>
- // Using Vue.js Here
- var editPatient = new Vue ({
- el: '#editPatient',
- delimiters: ['[[', ']]'],
- // data () {
- // return
- data: {
- patient_name: '' ,
- title: "Add New Patient",
- message: '{{ non_field_errors }}' ,
- id:'{{ patient_id }}',
- name:'',
- cardid:'',
- dob: new Date(),
- age: '',
- url:'http://192.168.1.120:8000/patientdata/patient/details/by/barcode/',
- barcode:'',
- sign:'_',
- },
- computed: {
- cardValue(){
- this.cardid = document.getElementById('cardid').value;
- return this.cardid;
- },
- barcodeChanged(){
- this.barcode = this.id + this.sign + this.dob + this.sign ;//+ this.cardid;
- return this.barcode;
- },
- urlChanged(){
- this.barurl = this.url + this.id + this.sign + this.dob + this.sign + this.cardid;
- return this.barurl;
- },
- }
- })
- </script>
- {% endblock %}
- ##################### patient_details.html
- {% extends 'index.html' %}
- {% load static %}
- {% load render_table from django_tables2 %}
- {% load widget_tweaks %}
- {% block content %}
- <div class="container" style="position: relative; display: inline-block; height:100%; width:100%" id="dashboard">
- <h1 class="title">Details For Patient ({{ qs.name }}) </h1>
- <!-- <div class="row"> -->
- <!-- card -->
- <div class="column is-6 float-left" style="width: 30%; height: 100%;">
- <div class="card card-link">
- <div class="card-content">
- <div class="content float-left" style="margin:2px; padding: 2px;">
- <p class="title is-4">
- <span class="fa fa-address-book"></span>
- | Patient Data </p>
- <br>
- <hr>
- <p class="content is-6">
- <span class="fa fa-user"></span>
- | Patient Name: {{ qs.name }} <br><br>
- <span class="fa fa-map-marker"></span>
- | Address : {{ qs.address }} <br><br>
- <span class="fa fa-birthday-cake"></span>
- | Birth Date : {{ qs.birth_date }} <br><br>
- <span class="fa fa-hourglass-2"></span>
- | Age : {{ qs.age }} <br><br>
- <span class="fa fa-phone"></span>
- | Phone : {{ qs.phone }} <br><br>
- <span class="fa fa-mobile"></span>
- | Mobile : {{ qs.mobile }}
- </p>
- </div>
- </div>
- <footer class="card-footer">
- <!-- <a class="button is-dark card-footer-item" href="{% url 'patientdata:save_patient' %}">
- New Patient</a> -->
- <a href="{% url 'patientdata:edit_patient' qs.id %}" class="card-footer-item button is-primary">
- Edit Patient</a>
- <a href="{% url 'visits:pass_patient_id' qs.id %}" class="card-footer-item button is-primary">
- New Visit</a>
- </footer>
- </div>
- </div>
- <!-- <div class="column float-left" style="width: 60%; height: 100%; border-style: outset; border-radius: 20px; border-color: #aab5af; box-shadow: 2px 2px 4px 4px grey;">
- <br>
- {% render_table visit_table %}
- </div> -->
- {% render_table visit_table %}
- </div>
- {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement