diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 00000000..ed52879d
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+project/local_settings.py
+.DS_Store
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 77d4985a..847fadea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
project/local_settings.py
+
media/*
staticdev_bk/*
templates_bk/*
@@ -9,8 +10,23 @@ templates_bk/*
media
Icon
static/CACHE
-static/node_modules
+static/node_modules/
staticdev/CACHE
venv
.coverage
-/static/css/.sass-cache/
\ No newline at end of file
+/static/css/.sass-cache/
+.venv
+.vscode
+*.pem
+.venv/*
+static/node_modules/*
+client-cert.pem
+client-key.pem
+server-ca.pem
+project/settings.py
+
+*.key
+*.crt
+*.pem
+
+.DS_Store
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..e9ebd2e5
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,18 @@
+FROM python:3.12-bookworm
+
+ARG django_settings_module
+ENV DJANGO_SETTINGS_MODULE=${django_settings_module}
+
+RUN apt-get -y update && apt-get -y install nginx
+
+COPY nginx.conf /etc/nginx/sites-available/default
+
+COPY . /
+RUN pip install --upgrade pip
+RUN pip install -r requirements.txt
+
+EXPOSE 8000
+EXPOSE 80
+
+RUN chmod u+x init.sh
+ENTRYPOINT ["./init.sh"]
diff --git a/apps/a1c_app/urls.py b/apps/a1c_app/urls.py
index fe5bf051..9695f743 100644
--- a/apps/a1c_app/urls.py
+++ b/apps/a1c_app/urls.py
@@ -14,22 +14,21 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
from a1c_app.views import *
+from django.urls import re_path
urlpatterns = [
- url(r'^(?P\d+)/info$', get_a1c_info),
- url(r'^(?P\d+)/value_info$', get_observation_value_info),
- url(r'^(?P\d+)/add_note$', add_note),
- url(r'^(?P\d+)/add_value$', add_value),
- url(r'^(?P\d+)/patient_refused$', patient_refused),
- url(r'^note/(?P\d+)/edit$', edit_note),
- url(r'^note/(?P\d+)/delete$', delete_note),
- url(r'^value/(?P\d+)/delete$', delete_value),
- url(r'^value/(?P\d+)/edit$', edit_value),
- url(r'^value/(?P\d+)/add_note$', add_value_note),
- url(r'^value/note/(?P\d+)/edit$', edit_value_note),
- url(r'^value/note/(?P\d+)/delete$', delete_value_note),
- url(r'^(?P\d+)/track/click/$', track_a1c_click),
+ re_path(r"^(?P\d+)/info$", get_a1c_info),
+ re_path(r"^(?P\d+)/value_info$", get_observation_value_info),
+ re_path(r"^(?P\d+)/add_note$", add_note),
+ re_path(r"^(?P\d+)/add_value$", add_value),
+ re_path(r"^(?P\d+)/patient_refused$", patient_refused),
+ re_path(r"^note/(?P\d+)/edit$", edit_note),
+ re_path(r"^note/(?P\d+)/delete$", delete_note),
+ re_path(r"^value/(?P\d+)/delete$", delete_value),
+ re_path(r"^value/(?P\d+)/edit$", edit_value),
+ re_path(r"^value/(?P\d+)/add_note$", add_value_note),
+ re_path(r"^value/note/(?P\d+)/edit$", edit_value_note),
+ re_path(r"^value/note/(?P\d+)/delete$", delete_value_note),
+ re_path(r"^(?P\d+)/track/click/$", track_a1c_click),
]
diff --git a/apps/a1c_app/views.py b/apps/a1c_app/views.py
index 5bdca267..7b01634c 100644
--- a/apps/a1c_app/views.py
+++ b/apps/a1c_app/views.py
@@ -14,19 +14,28 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.contrib.auth.decorators import login_required
-
from common.views import *
-from data_app.serializers import ObservationValueTextNoteSerializer, ObservationValueSerializer
-from emr.models import AOneCTextNote, ObservationComponent, UserProfile, ObservationValueTextNote, \
- AOneC, ObservationValue
+from data_app.serializers import (
+ ObservationValueSerializer,
+ ObservationValueTextNoteSerializer,
+)
+from django.contrib.auth.decorators import login_required
+from emr.models import (
+ AOneC,
+ AOneCTextNote,
+ ObservationComponent,
+ ObservationValue,
+ ObservationValueTextNote,
+ UserProfile,
+)
from emr.operations import op_add_event
from problems_app.operations import add_problem_activity
-from .serializers import AOneCTextNoteSerializer, AOneCSerializer
+
+from .serializers import AOneCSerializer, AOneCTextNoteSerializer
# set problem authentication to false if not physician, admin
-@timeit
+#@timeit
def set_problem_authentication_false(actor_profile, problem):
role = actor_profile.role
authenticated = role in ["physician", "admin"]
@@ -35,7 +44,7 @@ def set_problem_authentication_false(actor_profile, problem):
@login_required
-@timeit
+#@timeit
def track_a1c_click(request, a1c_id):
actor = request.user
a1c_info = AOneC.objects.get(id=a1c_id)
@@ -49,7 +58,7 @@ def track_a1c_click(request, a1c_id):
@login_required
-@timeit
+#@timeit
def get_a1c_info(request, a1c_id):
a1c_info = AOneC.objects.get(id=a1c_id)
resp = {}
@@ -61,7 +70,7 @@ def get_a1c_info(request, a1c_id):
# Note
@permissions_required(["add_a1c_note"])
@login_required
-@timeit
+#@timeit
def add_note(request, a1c_id):
resp = {}
note = request.POST.get("note")
@@ -75,7 +84,7 @@ def add_note(request, a1c_id):
@permissions_required(["edit_a1c_note"])
@login_required
-@timeit
+#@timeit
def edit_note(request, note_id):
resp = {}
@@ -90,7 +99,7 @@ def edit_note(request, note_id):
@permissions_required(["delete_a1c_note"])
@login_required
-@timeit
+#@timeit
def delete_note(request, note_id):
resp = {}
@@ -102,7 +111,7 @@ def delete_note(request, note_id):
@permissions_required(["add_a1c"])
@login_required
-@timeit
+#@timeit
def patient_refused(request, a1c_id):
a1c = AOneC.objects.get(id=a1c_id)
observation = a1c.observation
@@ -132,7 +141,7 @@ def patient_refused(request, a1c_id):
# Value
@permissions_required(["add_a1c"])
@login_required
-@timeit
+#@timeit
def add_value(request, component_id):
resp = {}
actor_profile = UserProfile.objects.get(user=request.user)
@@ -169,7 +178,7 @@ def add_value(request, component_id):
@permissions_required(["delete_observation_component"])
@login_required
-@timeit
+#@timeit
def delete_value(request, value_id):
resp = {}
ObservationValue.objects.get(id=value_id).delete()
@@ -178,7 +187,7 @@ def delete_value(request, value_id):
@login_required
-@timeit
+#@timeit
def get_observation_value_info(request, value_id):
resp = {}
@@ -193,7 +202,7 @@ def get_observation_value_info(request, value_id):
@permissions_required(["edit_observation_component"])
@login_required
-@timeit
+#@timeit
def edit_value(request, value_id):
resp = {}
@@ -211,7 +220,7 @@ def edit_value(request, value_id):
# Value Note
@permissions_required(["add_a1c_note"])
@login_required
-@timeit
+#@timeit
def add_value_note(request, value_id):
resp = {}
@@ -225,7 +234,7 @@ def add_value_note(request, value_id):
@permissions_required(["edit_a1c_note"])
@login_required
-@timeit
+#@timeit
def edit_value_note(request, note_id):
resp = {}
note = request.POST.get('note')
@@ -241,7 +250,7 @@ def edit_value_note(request, note_id):
@permissions_required(["delete_a1c_note"])
@login_required
-@timeit
+#@timeit
def delete_value_note(request, note_id):
resp = {}
diff --git a/apps/colons_app/urls.py b/apps/colons_app/urls.py
index 84532768..4ba46f47 100644
--- a/apps/colons_app/urls.py
+++ b/apps/colons_app/urls.py
@@ -15,43 +15,34 @@
along with this program. If not, see
"""
-from django.conf.urls import url
-
from colons_app.views import *
+from django.urls import re_path
urlpatterns = [
- url(r'^(?P\d+)/info$', get_colon_info),
- url(r'^(?P\d+)/refuse$', refuse),
- url(r'^(?P\d+)/not_appropriate$', not_appropriate),
-
- url(r'^study/(?P\d+)/info$', get_study_info),
- url(r'^(?P\d+)/add_study$', add_study),
- url(r'^(?P\d+)/edit_study$', edit_study),
- url(r'^(?P\d+)/delete_study$', delete_study),
-
- url(r'^study/(?P\d+)/upload_image$', upload_study_image),
- url(r'^study/(?P\d+)/addImage$', add_study_image),
- url(r'^study/(?P\d+)/image/(?P\d+)/delete$', delete_study_image),
-
- url(r'^(?P\d+)/add_factor$', add_factor),
- url(r'^(?P\d+)/delete_factor$', delete_factor),
-
-
- url(r'^(?P\d+)/add_note$', add_note),
- url(r'^note/(?P\d+)/edit$', edit_note),
- url(r'^note/(?P\d+)/delete$', delete_note),
-
- url(r'^(?P\d+)/track/click$', track_colon_click),
-
+ re_path(r"^(?P\d+)/info$", get_colon_info),
+ re_path(r"^(?P\d+)/refuse$", refuse),
+ re_path(r"^(?P\d+)/not_appropriate$", not_appropriate),
+ re_path(r"^study/(?P\d+)/info$", get_study_info),
+ re_path(r"^(?P\d+)/add_study$", add_study),
+ re_path(r"^(?P\d+)/edit_study$", edit_study),
+ re_path(r"^(?P\d+)/delete_study$", delete_study),
+ re_path(r"^study/(?P\d+)/upload_image$", upload_study_image),
+ re_path(r"^study/(?P\d+)/addImage$", add_study_image),
+ re_path(
+ r"^study/(?P\d+)/image/(?P\d+)/delete$", delete_study_image
+ ),
+ re_path(r"^(?P\d+)/add_factor$", add_factor),
+ re_path(r"^(?P\d+)/delete_factor$", delete_factor),
+ re_path(r"^(?P\d+)/add_note$", add_note),
+ re_path(r"^note/(?P\d+)/edit$", edit_note),
+ re_path(r"^note/(?P\d+)/delete$", delete_note),
+ re_path(r"^(?P\d+)/track/click$", track_colon_click),
# new restURL
- url(r'^(?P\d+)$', get_colon_info),
- url(r'^(?P\d+)/studies$', get_colon_cancer_studies),
- url(r'^(?P\d+)/studies/(?P\d+)$', colon_cancer_study),
-
- url(r'^(?P\d+)/risk-factors$', get_risk_factors),
- url(r'^(?P\d+)/risk-factors/(?P\d+)$', risk_factor),
-
- url(r'^(?P\d+)/notes$', get_notes),
- url(r'^(?P\d+)/notes/(?P\d+)$', note),
-
+ re_path(r"^(?P\d+)$", get_colon_info),
+ re_path(r"^(?P\d+)/studies$", get_colon_cancer_studies),
+ re_path(r"^(?P\d+)/studies/(?P\d+)$", colon_cancer_study),
+ re_path(r"^(?P\d+)/risk-factors$", get_risk_factors),
+ re_path(r"^(?P\d+)/risk-factors/(?P\d+)$", risk_factor),
+ re_path(r"^(?P\d+)/notes$", get_notes),
+ re_path(r"^(?P\d+)/notes/(?P\d+)$", note),
]
diff --git a/apps/colons_app/views.py b/apps/colons_app/views.py
index a0177a10..d2d89ee9 100644
--- a/apps/colons_app/views.py
+++ b/apps/colons_app/views.py
@@ -16,21 +16,33 @@
"""
import dateutil
-from django.contrib.auth.decorators import login_required
-from rest_framework.decorators import api_view
-
from common.views import *
-from emr.models import ColonCancerScreening, UserProfile, ColonCancerStudy, ColonCancerStudyImage, RiskFactor, Problem, \
- ColonCancerTextNote
+from django.contrib.auth.decorators import login_required
+from emr.models import (
+ ColonCancerScreening,
+ ColonCancerStudy,
+ ColonCancerStudyImage,
+ ColonCancerTextNote,
+ Problem,
+ RiskFactor,
+ UserProfile,
+)
from emr.operations import op_add_event
+from rest_framework.decorators import api_view
from users_app.serializers import SafeUserSerializer
from users_app.views import permissions_accessed
-from .serializers import ColonCancerScreeningSerializer, ColonCancerStudySerializer, RiskFactorSerializer, \
- ColonCancerTextNoteSerializer, StudyImageSerializer
+
+from .serializers import (
+ ColonCancerScreeningSerializer,
+ ColonCancerStudySerializer,
+ ColonCancerTextNoteSerializer,
+ RiskFactorSerializer,
+ StudyImageSerializer,
+)
@login_required
-@timeit
+#@timeit
def track_colon_click(request, colon_id):
resp = {'success': False}
colon_info = ColonCancerScreening.objects.get(id=colon_id)
@@ -46,7 +58,7 @@ def track_colon_click(request, colon_id):
@login_required
-@timeit
+#@timeit
def get_colon_info(request, colon_id):
resp = {'success': False}
colon_info = ColonCancerScreening.objects.get(id=colon_id)
@@ -70,7 +82,7 @@ def get_colon_info(request, colon_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_study(request, colon_id):
resp = {'success': False}
colon = ColonCancerScreening.objects.get(id=colon_id)
@@ -78,7 +90,7 @@ def add_study(request, colon_id):
if permissions_accessed(request.user, colon.patient.id):
finding = request_data.get("finding", None)
result = request_data.get("result", None)
- study_date = dateutil.parser.parse(request_data.get('date'))
+ study_date = dateutil.parser.parse(request_data.get('date'), ignoretz=True)
note = request_data.get("note", None)
study = ColonCancerStudy.objects.create(colon=colon, finding=finding, result=result, note=note,
@@ -105,7 +117,7 @@ def add_study(request, colon_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def delete_study(request, study_id):
resp = {'success': False}
study = ColonCancerStudy.objects.get(id=study_id)
@@ -118,7 +130,7 @@ def delete_study(request, study_id):
@login_required
-@timeit
+#@timeit
def get_study_info(request, study_id):
resp = {'success': False}
study = ColonCancerStudy.objects.get(id=study_id)
@@ -129,7 +141,7 @@ def get_study_info(request, study_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def edit_study(request, study_id):
resp = {'success': False}
study = ColonCancerStudy.objects.get(id=study_id)
@@ -148,7 +160,7 @@ def edit_study(request, study_id):
@login_required
-@timeit
+#@timeit
def upload_study_image(request, study_id):
resp = {'success': False}
study = ColonCancerStudy.objects.get(id=study_id)
@@ -173,7 +185,7 @@ def upload_study_image(request, study_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def delete_study_image(request, study_id, image_id):
resp = {'success': False}
study = ColonCancerStudy.objects.get(id=study_id)
@@ -190,7 +202,7 @@ def delete_study_image(request, study_id, image_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_study_image(request, study_id):
resp = {'success': False}
study = ColonCancerStudy.objects.get(id=study_id)
@@ -218,7 +230,7 @@ def add_study_image(request, study_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_factor(request, colon_id):
resp = {'success': False}
colon = ColonCancerScreening.objects.get(id=colon_id)
@@ -254,7 +266,7 @@ def add_factor(request, colon_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def delete_factor(request, colon_id):
resp = {'success': False}
colon = ColonCancerScreening.objects.get(id=colon_id)
@@ -281,7 +293,7 @@ def delete_factor(request, colon_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def refuse(request, colon_id):
resp = {'success': False}
colon = ColonCancerScreening.objects.get(id=colon_id)
@@ -301,7 +313,7 @@ def refuse(request, colon_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def not_appropriate(request, colon_id):
resp = {'success': False}
colon = ColonCancerScreening.objects.get(id=colon_id)
@@ -321,7 +333,7 @@ def not_appropriate(request, colon_id):
# Note
@login_required
-@timeit
+#@timeit
def add_note(request, colon_id):
resp = {'success': False}
colon = ColonCancerScreening.objects.get(id=colon_id)
@@ -335,7 +347,7 @@ def add_note(request, colon_id):
@login_required
-@timeit
+#@timeit
def edit_note(request, note_id):
resp = {'success': False}
note = ColonCancerTextNote.objects.get(id=note_id)
@@ -348,7 +360,7 @@ def edit_note(request, note_id):
@login_required
-@timeit
+#@timeit
def delete_note(request, note_id):
resp = {'success': False}
note = ColonCancerTextNote.objects.get(id=note_id)
@@ -359,13 +371,13 @@ def delete_note(request, note_id):
@login_required
-@timeit
+#@timeit
def get_colon_cancer_studies(request, colon_id):
pass
@login_required
-@timeit
+#@timeit
def colon_cancer_study(request, colon_id, study_id):
resp = {'success': False}
request_data = json.loads(request.body)
@@ -380,7 +392,7 @@ def colon_cancer_study(request, colon_id, study_id):
study = ColonCancerStudy.objects.get(id=study_id)
finding = request_data.get("finding", None)
result = request_data.get("result", None)
- study_date = dateutil.parser.parse(request_data.get('date'))
+ study_date = dateutil.parser.parse(request_data.get('date'), ignoretz=True)
note = request_data.get("note", None)
study.finding = finding
@@ -408,24 +420,24 @@ def colon_cancer_study(request, colon_id, study_id):
@login_required
-@timeit
+#@timeit
def get_risk_factors(request, colon_id):
pass
@login_required
-@timeit
+#@timeit
def risk_factor(request, colon_id, risk_factor_id):
pass
@login_required
-@timeit
+#@timeit
def get_notes(request, colon_id):
pass
@login_required
-@timeit
+#@timeit
def note(request, colon_id, note_id):
pass
diff --git a/apps/common/views.py b/apps/common/views.py
index 714d0e5a..a518a89e 100644
--- a/apps/common/views.py
+++ b/apps/common/views.py
@@ -20,7 +20,6 @@
from datetime import datetime
from django.http import *
-
from emr.manage_patient_permissions import check_permissions
from emr.models import ObservationComponent
diff --git a/apps/data_app/operations.py b/apps/data_app/operations.py
index 8cb6c4f6..a58a88dc 100644
--- a/apps/data_app/operations.py
+++ b/apps/data_app/operations.py
@@ -14,36 +14,34 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from itertools import izip
-from django.db import connection
+from datetime import datetime
-from common.views import timeit
-from emr.models import ObservationValue
+from django.db import connection, transaction
+from emr.models import ObservationComponent, ObservationValue
+from emr.operations import op_add_event
-@timeit
-def get_observation_most_common_value(component, effective_datetime):
+# @timeit
+def get_observation_most_common_value(component):
"""
Get most recent value of observation component
:param component:
:param effective_datetime:
- :return:
+ :return:
"""
- observation_component = ObservationValue.objects.filter(component=component).filter(
- effective_datetime=effective_datetime)
-
- if observation_component.exists():
- return float(observation_component.first().value_quantity)
+ most_recent_value = (
+ ObservationValue.objects.using("default_read_uncommitted")
+ .filter(component=component)
+ .order_by("-effective_datetime")
+ )
+ if most_recent_value.exists():
+ return float(most_recent_value.first().value_quantity)
else:
- most_recent_value = ObservationValue.objects.filter(component=component).order_by('-effective_datetime')
- if most_recent_value.exists():
- return float(most_recent_value.first().value_quantity)
- else:
- return float(1)
+ return None
-@timeit
+# @timeit
def query_to_dicts(query_string, *query_args):
"""Run a simple query and produce a generator
that returns the results as a bunch of dictionaries
@@ -56,25 +54,128 @@ def query_to_dicts(query_string, *query_args):
row = cursor.fetchone()
if row is None:
break
- row_dict = dict(izip(col_names, row))
+ row_dict = dict(zip(col_names, row))
yield row_dict
return
-@timeit
+# @timeit
def get_observation_value_pair(component_id):
"""
:param component_id:
:return:
"""
- raw_query = "SELECT DATE_FORMAT(ANY_VALUE(created_on), '%m/%d/%Y %H:%i') as entry_time, GROUP_CONCAT(ANY_VALUE(value_quantity) SEPARATOR '/') as value, GROUP_CONCAT(ANY_VALUE(id) SEPARATOR '&') as edit_link FROM emr_observationvalue WHERE component_id IN ({0}) GROUP BY DATE_FORMAT(created_on, '%Y-%m-%d %H:%i:%s')" \
- .format(component_id)
+ raw_query = "SELECT note, DATE_FORMAT(ANY_VALUE(created_on), '%m/%d/%Y %H:%i') as entry_time, GROUP_CONCAT(ANY_VALUE(value_quantity) SEPARATOR '/') as value, GROUP_CONCAT(ANY_VALUE(id) SEPARATOR '&') as edit_link FROM emr_observationvalue WHERE component_id IN ({0}) GROUP BY note, DATE_FORMAT(created_on, '%Y-%m-%d %H:%i:%s')".format(
+ component_id
+ )
with connection.cursor() as cursor:
cursor.execute(raw_query)
columns = [col[0] for col in cursor.description]
- return [
- dict(zip(columns, row))
- for row in cursor.fetchall()
- ]
+ return [dict(zip(columns, row)) for row in cursor.fetchall()]
+
+
+def handle_bmi_calculation(userProfile, request, value, patient, effective_datetime):
+ if value.component.name == "weight":
+ handle_weight_provided_event(
+ value, userProfile, request, patient, effective_datetime
+ )
+ elif value.component.name == "height":
+ handle_height_provided_event(
+ value, userProfile, request, patient, effective_datetime
+ )
+
+
+def handle_weight_provided_event(
+ value, userProfile, request, patient, effective_datetime
+):
+ heightComponent = (
+ ObservationComponent.objects.filter(component_code="8302-2")
+ .filter(observation__subject_id=int(patient.id))
+ .get()
+ )
+ height = get_observation_most_common_value(heightComponent)
+
+ if height is not None:
+ bmiComponent = get_bmi_component(patient)
+ bmiValue = calculate_bmi(value.value_quantity, height)
+ ObservationValue(
+ author=request.user,
+ component=bmiComponent,
+ effective_datetime=effective_datetime,
+ value_quantity=bmiValue,
+ ).save()
+
+ if (
+ userProfile.weight_updated_date == None
+ or userProfile.weight_updated_date.date() < datetime.now().date()
+ ):
+ userProfile.weight_updated_date = datetime.now()
+ userProfile.save()
+
+ save_log(value, bmiComponent, request, bmiValue)
+ else:
+ pass
+
+
+def handle_height_provided_event(
+ value, userProfile, request, patient, effective_datetime
+):
+ weightComponent = (
+ ObservationComponent.objects.filter(component_code="3141-9")
+ .filter(observation__subject_id=int(patient.id))
+ .get()
+ )
+ weight = get_observation_most_common_value(weightComponent)
+ if weight is not None:
+ bmiComponent = get_bmi_component(patient)
+ bmiValue = calculate_bmi(weight, value.value_quantity)
+ ObservationValue(
+ author=request.user,
+ component=bmiComponent,
+ effective_datetime=effective_datetime,
+ value_quantity=bmiValue,
+ ).save()
+
+ if userProfile.height_changed_first_time == False:
+ userProfile.height_changed_first_time = True
+ userProfile.height_updated_date = datetime.now()
+ userProfile.save()
+ else:
+ if userProfile.height_updated_date.date() < datetime.now().date():
+ userProfile.height_updated_date = datetime.now()
+ userProfile.save()
+
+ save_log(value, bmiComponent, request, bmiValue)
+
+ else:
+ pass
+
+
+def get_bmi_component(patient):
+ return (
+ ObservationComponent.objects.filter(component_code="39156-5")
+ .filter(observation__subject=patient)
+ .first()
+ )
+
+
+def save_log(value, bmiComponent, request, bmiValue):
+ # Save log
+ summary = "A value of {0} was added for {1}".format(
+ bmiValue, bmiComponent.observation.name
+ )
+ op_add_event(request.user, value.component.observation.subject, summary)
+
+
+def calculate_bmi(weight_lbs, height_inches):
+ # Convert pounds to kilograms (1 lb = 0.453592 kg)
+ weight_kg = weight_lbs * 0.453592
+
+ # Convert inches to meters (1 inch = 0.0254 meters)
+ height_m = height_inches * 0.0254
+
+ bmi = weight_kg / (height_m**2)
+ rounded_bmi = round(bmi, 1)
+ return rounded_bmi
diff --git a/apps/data_app/serializers.py b/apps/data_app/serializers.py
index e575ce15..1ba9b675 100644
--- a/apps/data_app/serializers.py
+++ b/apps/data_app/serializers.py
@@ -14,10 +14,17 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
+from datetime import datetime
+
+from emr.models import (
+ Observation,
+ ObservationComponent,
+ ObservationPinToProblem,
+ ObservationUnit,
+ ObservationValue,
+ ObservationValueTextNote,
+)
from rest_framework import serializers
-
-from emr.models import Observation, ObservationComponent, ObservationValueTextNote, ObservationPinToProblem, \
- ObservationUnit, ObservationValue
from users_app.serializers import SafeUserSerializer
@@ -47,8 +54,6 @@ class Meta:
class ObservationValueSerializer(serializers.ModelSerializer):
author = SafeUserSerializer()
- date = serializers.SerializerMethodField()
- time = serializers.SerializerMethodField()
observation = serializers.SerializerMethodField()
value_quantity = serializers.SerializerMethodField()
observation_value_notes = ObservationValueTextNoteSerializer(many=True, read_only=True)
@@ -62,22 +67,10 @@ class Meta:
'value_quantity',
'effective_datetime',
'created_on',
- 'date',
- 'time',
'observation',
'observation_value_notes',
)
- def get_date(self, obj):
- if not obj.effective_datetime:
- return ''
- return obj.effective_datetime.strftime('%m/%d/%Y')
-
- def get_time(self, obj):
- if not obj.effective_datetime:
- return ''
- return obj.effective_datetime.strftime('%H:%M')
-
def get_observation(self, obj):
return obj.component.observation.id
diff --git a/apps/data_app/urls.py b/apps/data_app/urls.py
index fa2b9067..d534ce85 100644
--- a/apps/data_app/urls.py
+++ b/apps/data_app/urls.py
@@ -14,27 +14,33 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
from data_app.views import *
+from django.urls import re_path
urlpatterns = [
- url(r'^track/click$', track_observation_click),
- url(r'^(?P\d+)/info$', get_observation_info),
- url(r'^(?P\d+)/(?P\d+)/individual_data_info$', get_individual_data_info),
- url(r'^(?P\d+)/get_datas$', get_datas),
- url(r'^(?P\d+)/add_new_data_type$', add_new_data_type),
- url(r'^(?P\d+)/(?P\d+)/save_data_type$', save_data_type),
- url(r'^(?P\d+)/(?P\d+)/delete_data$', delete_data),
- url(r'^updateOrder$', update_order),
- url(r'^(?P\d+)/get_pins$', get_pins),
- url(r'^(?P\d+)/pin_to_problem$', obseration_pin_to_problem),
- url(r'^(?P\d+)/(?P\d+)/add_new_data$', add_new_data),
- url(r'^(?P\d+)/(?P\d+)/delete_individual_data$', delete_individual_data),
- url(r'^(?P\d+)/(?P\d+)/save_data$', save_data),
- url(r'^update_graph$', update_graph),
-
+ re_path(r"^track/click$", track_observation_click),
+ re_path(r"^(?P\d+)/info$", get_observation_info),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/individual_data_info$",
+ get_individual_data_info,
+ ),
+ re_path(r"^(?P\d+)/get_datas$", get_datas),
+ re_path(r"^(?P\d+)/add_new_data_type$", add_new_data_type),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/save_data_type$", save_data_type
+ ),
+ re_path(r"^(?P\d+)/(?P\d+)/delete_data$", delete_data),
+ re_path(r"^updateOrder$", update_order),
+ re_path(r"^(?P\d+)/get_pins$", get_pins),
+ re_path(r"^(?P\d+)/pin_to_problem$", obseration_pin_to_problem),
+ re_path(r"^(?P\d+)/(?P\d+)/add_new_data$", add_new_data),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/delete_individual_data$",
+ delete_individual_data,
+ ),
+ re_path(r"^(?P\d+)/(?P\d+)/save_data$", save_data),
+ re_path(r"^update_graph$", update_graph),
# Allow to edit multiple observation component value
- url(r'^(?P\d+)/delete$', delete_component_values),
- url(r'(?P\d+)/values$', get_observation_values),
+ re_path(r"^(?P\d+)/delete$", delete_component_values),
+ re_path(r"(?P\d+)/values$", get_observation_values),
]
diff --git a/apps/data_app/views.py b/apps/data_app/views.py
index cda06f88..7f2bb797 100644
--- a/apps/data_app/views.py
+++ b/apps/data_app/views.py
@@ -14,49 +14,68 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
+
+from datetime import datetime
from math import pow
+from common.views import *
+from data_app.operations import get_observation_value_pair, handle_bmi_calculation
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
+from django.db import transaction
from django.db.models import *
-from rest_framework.decorators import api_view
-
-from common.views import *
-from data_app.operations import get_observation_most_common_value, get_observation_value_pair
-from emr.models import OBSERVATION_TYPES
-from emr.models import Observation, ObservationComponent, ObservationOrder, \
- PhysicianTeam, ObservationPinToProblem, Problem, ObservationUnit, ObservationValue, \
- Inr, UserProfile
+from django.utils import timezone
+from emr.models import (
+ OBSERVATION_TYPES,
+ Inr,
+ Observation,
+ ObservationComponent,
+ ObservationOrder,
+ ObservationPinToProblem,
+ ObservationUnit,
+ ObservationValue,
+ PhysicianTeam,
+ Problem,
+ UserProfile,
+)
from emr.operations import op_add_event
from inr_app.serializers import InrSerializer
+from rest_framework.decorators import api_view
from users_app.views import permissions_accessed
-from .serializers import ObservationSerializer, ObservationPinToProblemSerializer, ObservationValueSerializer
+
+from .serializers import (
+ ObservationPinToProblemSerializer,
+ ObservationSerializer,
+ ObservationValueSerializer,
+)
@login_required
-@timeit
+# @timeit
def track_observation_click(request):
- resp = {'success': False}
+ resp = {"success": False}
actor = request.user
if request.POST.get("patient_id", None):
patient = User.objects.get(id=request.POST.get("patient_id", None))
if request.POST.get("observation_id", None):
- observation = Observation.objects.get(id=request.POST.get("observation_id", None))
+ observation = Observation.objects.get(
+ id=request.POST.get("observation_id", None)
+ )
summary = "%s accessed %s" % (actor.username, observation.name)
else:
summary = "%s accessed data" % (actor.username)
op_add_event(actor, patient, summary)
- resp['success'] = True
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def get_datas(request, patient_id):
- resp = {'success': False}
+ resp = {"success": False}
if permissions_accessed(request.user, int(patient_id)):
patient_user = User.objects.get(id=patient_id)
@@ -64,43 +83,55 @@ def get_datas(request, patient_id):
# TODO[Observation] This initial data should be added when a patient is REGISTERED | ACTIVED
# region Add default datas: heart rate, blood pressure, respiratory rate, body temperature, height, weight, body mass index, PHQ-2
for data in OBSERVATION_TYPES:
- if not data.get('name', '') == 'a1c' and not Observation.objects.filter(name=data.get('name', ''),
- author=None,
- subject=patient_user).exists():
+ if (
+ not data.get("name", "") == "a1c"
+ and not Observation.objects.filter(
+ name=data.get("name", ""), author=None, subject=patient_user
+ ).exists()
+ ):
observation = Observation()
- observation.code = data.get('loinc_code', '')
- observation.name = data.get('name', '')
- observation.color = data.get('color', None)
+ observation.code = data.get("loinc_code", "")
+ observation.name = data.get("name", "")
+ observation.color = data.get("color", None)
observation.subject = patient_user
observation.save()
first_loop = True
- for unit in data.get('unit', []):
- observation_unit = ObservationUnit.objects.create(observation=observation, value_unit=unit)
+ for unit in data.get("unit", []):
+ observation_unit = ObservationUnit.objects.create(
+ observation=observation, value_unit=unit
+ )
if first_loop:
- observation_unit.is_used = True # will be changed in future when having conversion
+ observation_unit.is_used = (
+ True # will be changed in future when having conversion
+ )
first_loop = False
observation_unit.save()
- if data.has_key('components'):
- for component in data.get('components', []):
+ if "components" in data:
+ for component in data.get("components", []):
observation_component = ObservationComponent()
observation_component.observation = observation
- observation_component.component_code = component.get('loinc_code', '')
- observation_component.name = component.get('name', '')
+ observation_component.component_code = component.get(
+ "loinc_code", ""
+ )
+ observation_component.name = component.get("name", "")
observation_component.save()
else:
observation_component = ObservationComponent()
observation_component.observation = observation
- observation_component.component_code = data.get('loinc_code', '')
- observation_component.name = data.get('name', '')
+ observation_component.component_code = data.get("loinc_code", "")
+ observation_component.name = data.get("name", "")
observation_component.save()
# endregion
observations = Observation.objects.filter(subject__id=int(patient_id))
- if request.user.profile.role == 'nurse' or request.user.profile.role == 'secretary':
+ if (
+ request.user.profile.role == "nurse"
+ or request.user.profile.role == "secretary"
+ ):
team_members = PhysicianTeam.objects.filter(member=request.user)
if team_members:
user = team_members[0].physician
@@ -110,42 +141,44 @@ def get_datas(request, patient_id):
user = request.user
try:
- observation_order = ObservationOrder.objects.get(user=user, patient_id=patient_id)
+ observation_order = ObservationOrder.objects.get(
+ user_id=user.id, patient_id=patient_id
+ )
except ObservationOrder.DoesNotExist:
observation_order = ObservationOrder(user=user, patient_id=patient_id)
observation_order.save()
observation_list = []
- for key in observation_order.order:
- if observations.filter(id=key):
- observation = observations.get(id=key)
- observation_dict = ObservationSerializer(observation).data
- observation_list.append(observation_dict)
+ if observation_order.order is not None:
+ for key in observation_order.order:
+ if observations.filter(id=key):
+ observation = observations.get(id=key)
+ observation_dict = ObservationSerializer(observation).data
+ observation_list.append(observation_dict)
for observation in observations:
- if not observation.id in observation_order.order:
- observation_dict = ObservationSerializer(observation).data
- observation_list.append(observation_dict)
+ observation_dict = ObservationSerializer(observation).data
+ observation_list.append(observation_dict)
- resp['success'] = True
- resp['info'] = observation_list
+ resp["success"] = True
+ resp["info"] = observation_list
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def get_observation_info(request, observation_id):
observation = Observation.objects.get(id=observation_id)
- resp = {'success': True, 'info': ObservationSerializer(observation).data}
+ resp = {"success": True, "info": ObservationSerializer(observation).data}
return ajax_response(resp)
@login_required
@permissions_required(["add_data_type"])
@api_view(["POST"])
-@timeit
+# @timeit
def add_new_data_type(request, patient_id):
- resp = {'success': False}
+ resp = {"success": False}
name = request.POST.get("name", None)
color_code = request.POST.get("color", None)
loinc_code = request.POST.get("code", None)
@@ -154,13 +187,22 @@ def add_new_data_type(request, patient_id):
if permissions_accessed(request.user, int(patient_id)):
# TODO[Observation]
patient = User.objects.get(id=int(patient_id))
- observation = Observation.objects.create(subject=patient, author=request.user, name=name, color=color_code,
- code=loinc_code)
+ observation = Observation.objects.create(
+ subject=patient,
+ author=request.user,
+ name=name,
+ color=color_code,
+ code=loinc_code,
+ )
observation.save()
if unit:
- observation_unit = ObservationUnit.objects.create(observation=observation, value_unit=unit)
- observation_unit.is_used = True # will be changed in future when having conversion
+ observation_unit = ObservationUnit.objects.create(
+ observation=observation, value_unit=unit
+ )
+ observation_unit.is_used = (
+ True # will be changed in future when having conversion
+ )
observation_unit.save()
observation_component = ObservationComponent()
@@ -169,24 +211,26 @@ def add_new_data_type(request, patient_id):
observation_component.name = name
observation_component.save()
- resp['observation'] = ObservationSerializer(observation).data
- resp['success'] = True
+ resp["observation"] = ObservationSerializer(observation).data
+ resp["success"] = True
return ajax_response(resp)
@permissions_required(["set_data_order"])
@login_required
-@timeit
+# @timeit
def update_order(request):
- resp = {'success': False}
+ resp = {"success": False}
datas = json.loads(request.body)
- if datas.has_key('patient_id'):
- id_datas = datas['datas']
- patient_id = datas['patient_id']
+ if datas.has_key("patient_id"):
+ id_datas = datas["datas"]
+ patient_id = datas["patient_id"]
try:
- order = ObservationOrder.objects.get(user=request.user, patient_id=patient_id)
+ order = ObservationOrder.objects.get(
+ user=request.user, patient_id=patient_id
+ )
except ObservationOrder.DoesNotExist:
order = ObservationOrder(user=request.user, patient_id=patient_id)
order.save()
@@ -194,190 +238,211 @@ def update_order(request):
order.order = id_datas
order.save()
- resp['success'] = True
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def get_pins(request, observation_id):
pins = ObservationPinToProblem.objects.filter(observation_id=observation_id)
- resp = {'success': True, 'pins': ObservationPinToProblemSerializer(pins, many=True).data}
+ resp = {
+ "success": True,
+ "pins": ObservationPinToProblemSerializer(pins, many=True).data,
+ }
return ajax_response(resp)
@login_required
@api_view(["POST"])
-@timeit
+# @timeit
def obseration_pin_to_problem(request, patient_id):
- resp = {'success': False}
+ resp = {"success": False}
if permissions_accessed(request.user, int(patient_id)) or True:
observation_id = request.POST.get("data_id", None)
problem_id = request.POST.get("problem_id", None)
observation = Observation.objects.get(id=observation_id)
try:
- pin = ObservationPinToProblem.objects.get(observation_id=observation_id, problem_id=problem_id)
+ pin = ObservationPinToProblem.objects.get(
+ observation_id=observation_id, problem_id=problem_id
+ )
up = UserProfile.objects.get(user_id=request.user.id)
- if up.role == 'patient' and pin.author_id != request.user.id:
- resp['success'] = "notallow"
+ if up.role == "patient" and pin.author_id != request.user.id:
+ resp["success"] = "notallow"
return ajax_response(resp)
pin.delete()
problems = Problem.objects.filter(patient_id=patient_id)
- optp = ObservationPinToProblem.objects.values_list('observation_id', ).filter(problem__in=problems)
+ optp = ObservationPinToProblem.objects.values_list(
+ "observation_id",
+ ).filter(problem__in=problems)
optp1 = []
for x in optp:
optp1.append(x[0])
- component = ObservationComponent.objects.filter(observation_id__in=optp1, component_code='6301-6')
- if ObservationComponent.objects.filter(observation=observation, component_code='6301-6').exists() and len(
- component) < 1:
- inr_objects_filter = Inr.objects.filter(observation_value__component__observation_id=observation_id)
+ component = ObservationComponent.objects.filter(
+ observation_id__in=optp1, component_code="6301-6"
+ )
+ if (
+ ObservationComponent.objects.filter(
+ observation=observation, component_code="6301-6"
+ ).exists()
+ and len(component) < 1
+ ):
+ inr_objects_filter = Inr.objects.filter(
+ observation_value__component__observation_id=observation_id
+ )
if inr_objects_filter.exists():
inr_objects_filter.delete()
- resp['remove_inr'] = True
+ resp["remove_inr"] = True
except ObservationPinToProblem.DoesNotExist:
problems = Problem.objects.filter(patient_id=patient_id)
- optp = ObservationPinToProblem.objects.values_list('observation_id', ).filter(
- problem__in=problems).distinct()
+ optp = (
+ ObservationPinToProblem.objects.values_list(
+ "observation_id",
+ )
+ .filter(problem__in=problems)
+ .distinct()
+ )
optp1 = []
for x in optp:
optp1.append(x[0])
- component = ObservationComponent.objects.filter(observation_id__in=optp1, component_code='6301-6')
- pin = ObservationPinToProblem(author_id=request.user.id, observation_id=observation_id,
- problem_id=problem_id)
+ component = ObservationComponent.objects.filter(
+ observation_id__in=optp1, component_code="6301-6"
+ )
+ pin = ObservationPinToProblem(
+ author_id=request.user.id,
+ observation_id=observation_id,
+ problem_id=problem_id,
+ )
pin.save()
- if ObservationComponent.objects.filter(observation=observation, component_code='6301-6').exists() and len(
- component) < 1:
+ if (
+ ObservationComponent.objects.filter(
+ observation=observation, component_code="6301-6"
+ ).exists()
+ and len(component) < 1
+ ):
patient_user = User.objects.get(id=patient_id)
- inr = Inr(observation_id=observation_id, problem_id=problem_id, author=request.user,
- patient=patient_user)
+ inr = Inr(
+ observation_id=observation_id,
+ problem_id=problem_id,
+ author=request.user,
+ patient=patient_user,
+ )
inr.save()
- resp['inr'] = InrSerializer(inr).data
+ resp["inr"] = InrSerializer(inr).data
- resp['pin'] = ObservationPinToProblemSerializer(pin).data
- resp['success'] = True
+ resp["pin"] = ObservationPinToProblemSerializer(pin).data
+ resp["success"] = True
return ajax_response(resp)
@login_required
@api_view(["POST"])
-@timeit
+# @timeit
def add_new_data(request, patient_id, component_id):
- resp = {'success': False}
-
- patient = User.objects.filter(id=int(patient_id)).get() # Patient user instance
- effective_datetime = request.POST.get("datetime", datetime.now().strftime('%m/%d/%Y %H:%M')) # Get user submit data
-
+ effective_datetime = request.POST.get("datetime", None)
+
+ if effective_datetime:
+ input_datetime = datetime.strptime(effective_datetime, "%m/%d/%Y %H:%M")
+ formatted_datetime = input_datetime.strftime("%Y-%m-%d %H:%M:%S%z")
+ else:
+ effective_datetime = timezone.make_aware(datetime.now()).strftime(
+ "%m/%d/%Y %H:%M"
+ )
+ formatted_datetime = effective_datetime.strftime("%Y-%m-%d %H:%M:%S%z")
+
+ resp = {"success": False}
value_quantity = request.POST.get("value", 0)
- value_quantity = value_quantity if value_quantity != '' else 0 # Passed empty value
+ value_quantity = value_quantity if value_quantity != "" else 0 # Passed empty value
# Validate user input
- if permissions_accessed(request.user, int(patient_id)) and validate_effective_datetime(
- effective_datetime) and validate_number(value_quantity) and validate_value_quantity(component_id,
- value_quantity):
-
- # DB stuff
- effective_datetime = datetime.strptime(effective_datetime, '%m/%d/%Y %H:%M')
- value = ObservationValue(author=request.user, component_id=component_id,
- effective_datetime=effective_datetime, value_quantity=float(value_quantity))
+ if (
+ permissions_accessed(request.user, int(patient_id))
+ and validate_effective_datetime(effective_datetime)
+ and validate_number(value_quantity)
+ and validate_value_quantity(component_id, value_quantity)
+ ):
+ userProfile = UserProfile.objects.get(user__id=patient_id)
+ # userProfile = UserProfile.objects.get(id=patient_id)
+ value = ObservationValue(
+ author=request.user,
+ component_id=component_id,
+ effective_datetime=formatted_datetime,
+ value_quantity=float(value_quantity),
+ note=request.POST.get("note", None),
+ )
value.save()
- # Auto add bmi data if observation component is weight or height
- # TODO: Need to improve this block of code - https://trello.com/c/PaSdgs3k
- bmiComponent = ObservationComponent.objects.filter(component_code='39156-5').filter(
- observation__subject=patient).first()
- # TODO: Later when finished refactor model relationship and patient
- if value.component.name == 'weight':
- # Calculation
- heightComponent = ObservationComponent.objects.filter(component_code='8302-2').filter(
- observation__subject_id=int(patient_id)).get()
- height = get_observation_most_common_value(heightComponent, effective_datetime)
- bmiValue = round(float(value.value_quantity) * 703 / pow(height, 2), 2)
-
- # DB stuff transaction
- ObservationValue(author=request.user, component=bmiComponent,
- effective_datetime=effective_datetime, value_quantity=bmiValue).save()
- # Save log
- summary = "A value of {0} was added for {1}".format(bmiValue, bmiComponent.observation.name)
- op_add_event(request.user, value.component.observation.subject, summary)
-
- if value.component.name == 'height':
- # Calculation
- weightComponent = ObservationComponent.objects.filter(component_code='3141-9').filter(
- observation__subject_id=int(patient_id)).get()
- weight = get_observation_most_common_value(weightComponent, effective_datetime)
- bmiValue = round(weight * 703 / pow(float(value.value_quantity), 2), 2)
-
- # DB stuff transaction
- ObservationValue(author=request.user, component=bmiComponent,
- effective_datetime=effective_datetime, value_quantity=bmiValue).save()
- # Save log
- summary = "A value of {0} was added for {1}".format(bmiValue, bmiComponent.observation.name)
- op_add_event(request.user, value.component.observation.subject, summary)
-
# Save log
- summary = "A value of {0} was added for {1}".format(value.value_quantity,
- value.component.observation.name)
+ summary = "A value of {0} was added for {1}".format(
+ value.value_quantity, value.component.observation.name
+ )
op_add_event(request.user, value.component.observation.subject, summary)
- resp['value'] = ObservationValueSerializer(value).data
- resp['success'] = True
+ if value.component.name in ["weight"]:
+ patient = User.objects.filter(id=int(patient_id)).get()
+ handle_bmi_calculation(
+ userProfile, request, value, patient, formatted_datetime
+ )
+
+ resp["value"] = ObservationValueSerializer(value).data
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def get_individual_data_info(request, patient_id, value_id):
- resp = {'success': False}
+ resp = {"success": False}
if permissions_accessed(request.user, int(patient_id)):
value = ObservationValue.objects.get(id=value_id)
# TODO: Figure out why this one is fixed OBSERVATION_TYPES[0]['name'] = 'a1c'
- if not value.component.observation.name == 'a1c':
- resp['info'] = ObservationValueSerializer(value).data
- resp['success'] = True
+ if not value.component.observation.name == "a1c":
+ resp["info"] = ObservationValueSerializer(value).data
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def delete_individual_data(request, patient_id, value_id):
- resp = {'success': False}
+ resp = {"success": False}
if permissions_accessed(request.user, int(patient_id)):
value = ObservationValue.objects.get(id=value_id)
value.delete()
- resp['success'] = True
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def save_data(request, patient_id, value_id):
- resp = {'success': False}
+ resp = {"success": False}
if permissions_accessed(request.user, int(patient_id)):
value = ObservationValue.objects.get(id=value_id)
effective_datetime = request.POST.get("datetime", None)
if effective_datetime:
- effective_datetime = datetime.strptime(effective_datetime, '%m/%d/%Y %H:%M')
+ effective_datetime = datetime.strptime(effective_datetime, "%m/%d/%Y %H:%M")
value_quantity = request.POST.get("value_quantity", None)
value.effective_datetime = effective_datetime
value.value_quantity = value_quantity
value.save()
- resp['info'] = ObservationValueSerializer(value).data
- resp['success'] = True
+ resp["info"] = ObservationValueSerializer(value).data
+ resp["success"] = True
return ajax_response(resp)
@login_required
@permissions_required(["add_data_type"])
@api_view(["POST"])
-@timeit
+# @timeit
def save_data_type(request, patient_id, observation_id):
- resp = {'success': False}
+ resp = {"success": False}
name = request.POST.get("name", None)
color_code = request.POST.get("color", None)
unit = request.POST.get("unit", None)
@@ -399,8 +464,8 @@ def save_data_type(request, patient_id, observation_id):
observation_unit.value_unit = unit
observation_unit.save()
- resp['observation'] = ObservationSerializer(observation).data
- resp['success'] = True
+ resp["observation"] = ObservationSerializer(observation).data
+ resp["success"] = True
return ajax_response(resp)
@@ -408,9 +473,9 @@ def save_data_type(request, patient_id, observation_id):
@login_required
@permissions_required(["add_data_type"])
@api_view(["POST"])
-@timeit
+# @timeit
def delete_data(request, patient_id, observation_id):
- resp = {'success': False}
+ resp = {"success": False}
if permissions_accessed(request.user, int(patient_id)):
observation = Observation.objects.get(id=observation_id)
if not observation.author is None: # prevent default datas
@@ -425,7 +490,7 @@ def delete_data(request, patient_id, observation_id):
observation.delete()
- resp['success'] = True
+ resp["success"] = True
return ajax_response(resp)
@@ -433,40 +498,40 @@ def delete_data(request, patient_id, observation_id):
@login_required
@permissions_required(["add_data_type"])
@api_view(["POST"])
-@timeit
+# @timeit
def update_graph(request):
- resp = {'success': False}
+ resp = {"success": False}
# If user have access to this data
- if permissions_accessed(request.user, int(request.POST.get('patient_id'))):
- observation = Observation.objects.get(id=request.POST.get('data_id'))
- observation.graph = request.POST.get('graph_type')
+ if permissions_accessed(request.user, int(request.POST.get("patient_id"))):
+ observation = Observation.objects.get(id=request.POST.get("data_id"))
+ observation.graph = request.POST.get("graph_type")
observation.save()
- resp['success'] = True
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def delete_component_values(request, patient_id):
"""
- Delete observation component values
- :param patient_id:
- :param request:
- :return:
+ Delete observation component values
+ :param patient_id:
+ :param request:
+ :return:
"""
- resp = {'success': False}
+ resp = {"success": False}
json_body = json.loads(request.body)
- observation_value_ids = json_body.get('component_values')
+ observation_value_ids = json_body.get("component_values")
if permissions_accessed(request.user, int(patient_id)):
ObservationValue.objects.filter(id__in=observation_value_ids).delete()
- resp['success'] = True
+ resp["success"] = True
return ajax_response(resp)
@login_required
-@timeit
+# @timeit
def get_observation_values(request, observation_id):
"""
@@ -474,36 +539,46 @@ def get_observation_values(request, observation_id):
:param observation_id:
:return:
"""
- resp = {'success': False}
+ resp = {"success": False}
observation_unit = None
observation = Observation.objects.get(id=observation_id)
# Incase observation's unit is not specific then we should not load it
- observation_unit_query_set = ObservationUnit.objects.filter(is_used=True).filter(observation_id=observation_id)
+ observation_unit_query_set = ObservationUnit.objects.filter(is_used=True).filter(
+ observation_id=observation_id
+ )
if observation_unit_query_set.exists():
observation_unit = observation_unit_query_set.get()
# TODO: Value list return is not string
- observation_component_ids = ObservationComponent.objects.values_list('id', flat=True).filter(
- observation_id=observation_id)
- observation_components_labels = ObservationComponent.objects.values_list('name', flat=True).filter(
- observation_id=observation_id)
+ observation_component_ids = ObservationComponent.objects.values_list(
+ "id", flat=True
+ ).filter(observation_id=observation_id)
+ observation_components_labels = ObservationComponent.objects.values_list(
+ "name", flat=True
+ ).filter(observation_id=observation_id)
# Normalize list before passing to query
- observation_values = get_observation_value_pair(",".join(map(str, observation_component_ids)))
+ observation_values = get_observation_value_pair(
+ ",".join(map(str, observation_component_ids))
+ )
# Format blood pressure value before returning
- if '85354-9' == observation.code:
+ if "85354-9" == observation.code:
for obs in observation_values:
- valuesPair = obs['value'].split("/")
- obs['value'] = int(float(valuesPair[0])).__str__() + "/" + int(float(valuesPair[1])).__str__()
-
- resp['success'] = True
- resp['data'] = {
- 'id': observation_id,
- 'name': observation.name,
- 'unit': observation_unit.value_unit if observation_unit is not None else '',
- 'label': "/".join(map(str, observation_components_labels)),
- 'values': observation_values
+ valuesPair = obs["value"].split("/")
+ obs["value"] = (
+ int(float(valuesPair[0])).__str__()
+ + "/"
+ + int(float(valuesPair[1])).__str__()
+ )
+
+ resp["success"] = True
+ resp["data"] = {
+ "id": observation_id,
+ "name": observation.name,
+ "unit": observation_unit.value_unit if observation_unit is not None else "",
+ "label": "/".join(map(str, observation_components_labels)),
+ "values": observation_values,
}
return ajax_response(resp)
diff --git a/apps/document_app/operations.py b/apps/document_app/operations.py
index bd4dcc62..859bf262 100644
--- a/apps/document_app/operations.py
+++ b/apps/document_app/operations.py
@@ -17,7 +17,7 @@
from common.views import timeit
-@timeit
+#@timeit
def fetch_document_label_set(document):
"""
Load all labels associated with a document which either direct pinned to this document or label via pinned todo
diff --git a/apps/document_app/urls.py b/apps/document_app/urls.py
index 5d8c5bf0..b2686be3 100644
--- a/apps/document_app/urls.py
+++ b/apps/document_app/urls.py
@@ -14,24 +14,23 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
+from django.urls import re_path
from document_app.views import *
urlpatterns = [
- url(r'^$', get_document_list),
- url(r'^upload_document$', upload_document),
- url(r'^info/(?P\d+)$', document_info),
- url(r'^pin/patient$', pin_patient_2_document),
- url(r'^pin/label$', pin_label_2_document),
- url(r'^remove/label$', remove_document_label),
- url(r'^pin/todo$', pin_todo_2_document),
- url(r'^unpin/todo$', unpin_document_todo),
- url(r'^pin/problem$', pin_problem_2_document),
- url(r'^unpin/problem$', unpin_document_problem),
- url(r'^search_patient$', search_patient),
- url(r'^(?P\d+)/get_pinned_document$', get_patient_document),
- url(r'^delete/(?P\d+)$', delete_document),
- url(r'^remove/(?P\d+)$', remove_document),
- url(r'^(?P\d+)/name$', update_name)
+ re_path(r"^$", get_document_list),
+ re_path(r"^upload_document$", upload_document),
+ re_path(r"^info/(?P\d+)$", document_info),
+ re_path(r"^pin/patient$", pin_patient_2_document),
+ re_path(r"^pin/label$", pin_label_2_document),
+ re_path(r"^remove/label$", remove_document_label),
+ re_path(r"^pin/todo$", pin_todo_2_document),
+ re_path(r"^unpin/todo$", unpin_document_todo),
+ re_path(r"^pin/problem$", pin_problem_2_document),
+ re_path(r"^unpin/problem$", unpin_document_problem),
+ re_path(r"^search_patient$", search_patient),
+ re_path(r"^(?P\d+)/get_pinned_document$", get_patient_document),
+ re_path(r"^delete/(?P\d+)$", delete_document),
+ re_path(r"^remove/(?P\d+)$", remove_document),
+ re_path(r"^(?P\d+)/name$", update_name),
]
diff --git a/apps/document_app/views.py b/apps/document_app/views.py
index b55b4539..6263e021 100644
--- a/apps/document_app/views.py
+++ b/apps/document_app/views.py
@@ -14,18 +14,25 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
+from common.views import *
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.db.models import Q
-
-from common.views import *
from document_app.serializers import *
-from emr.models import Document, DocumentTodo, DocumentProblem, ToDo, Problem, UserProfile, Label
+from emr.models import (
+ Document,
+ DocumentProblem,
+ DocumentTodo,
+ Label,
+ Problem,
+ ToDo,
+ UserProfile,
+)
from todo_app.serializers import LabelSerializer
@login_required
-@timeit
+#@timeit
def upload_document(request):
"""
Handle single document file uploaded
@@ -54,7 +61,7 @@ def upload_document(request):
@login_required
-@timeit
+#@timeit
def get_document_list(request):
"""
Return uploaded document
@@ -84,7 +91,7 @@ def get_document_list(request):
@login_required
-@timeit
+#@timeit
def document_info(request, document_id):
"""
@@ -111,7 +118,7 @@ def document_info(request, document_id):
@login_required
-@timeit
+#@timeit
def pin_patient_2_document(request):
"""
@@ -135,7 +142,7 @@ def pin_patient_2_document(request):
@login_required
-@timeit
+#@timeit
def pin_todo_2_document(request):
"""
@@ -154,7 +161,7 @@ def pin_todo_2_document(request):
@login_required
-@timeit
+#@timeit
def pin_problem_2_document(request):
"""
@@ -174,7 +181,7 @@ def pin_problem_2_document(request):
@login_required
-@timeit
+#@timeit
def search_patient(request):
"""
Type ahead result to search patient
@@ -194,7 +201,7 @@ def search_patient(request):
for profile in profiles:
result.append({
'uid': profile.user.id,
- 'full_name': unicode(profile)
+ 'full_name': f'{profile.user.first_name} {profile.user.last_name}'
})
resp['results'] = result
@@ -203,7 +210,7 @@ def search_patient(request):
@login_required
-@timeit
+#@timeit
def get_patient_document(request, patient_id):
"""
@@ -221,7 +228,7 @@ def get_patient_document(request, patient_id):
@login_required
-@timeit
+#@timeit
def delete_document(request, document_id):
"""
ONLY DELETE DOCUMENT FROM TODO'S PAGE
@@ -268,7 +275,7 @@ def delete_document(request, document_id):
@login_required
-@timeit
+#@timeit
def pin_label_2_document(request):
"""
Pin a label to a document
@@ -289,7 +296,7 @@ def pin_label_2_document(request):
@login_required
-@timeit
+#@timeit
def remove_document_label(request):
"""
Pin a label to a document
@@ -310,7 +317,7 @@ def remove_document_label(request):
@login_required
-@timeit
+#@timeit
def unpin_document_todo(request):
"""
@@ -329,7 +336,7 @@ def unpin_document_todo(request):
@login_required
-@timeit
+#@timeit
def unpin_document_problem(request):
"""
Unpin a problem from document
@@ -348,7 +355,7 @@ def unpin_document_problem(request):
@login_required
-@timeit
+#@timeit
def remove_document(request, document_id):
"""
Delete a document from system
@@ -373,7 +380,7 @@ def remove_document(request, document_id):
@login_required
-@timeit
+#@timeit
def update_name(request, document_id):
"""
Rename document name. Allow duplicated file name(aka display name)
diff --git a/apps/emr/cron.py b/apps/emr/cron.py
index e7217e51..188398af 100644
--- a/apps/emr/cron.py
+++ b/apps/emr/cron.py
@@ -17,13 +17,23 @@
import datetime
import cronjobs
-from django.contrib.auth.models import User
-from django.db.models import Max, Count
-
from common.views import timeit
-from emr.models import ColonCancerScreening, Problem, ToDo, Label, \
- PatientController, TaggedToDoOrder, AOneC, ObservationPinToProblem, Observation, MedicationPinToProblem, \
- Medication, ProblemRelationship
+from django.contrib.auth.models import User
+from django.db.models import Count, Max
+from emr.models import (
+ AOneC,
+ ColonCancerScreening,
+ Label,
+ Medication,
+ MedicationPinToProblem,
+ Observation,
+ ObservationPinToProblem,
+ PatientController,
+ Problem,
+ ProblemRelationship,
+ TaggedToDoOrder,
+ ToDo,
+)
from emr.operations import op_add_event
from problems_app.operations import add_problem_activity
@@ -146,7 +156,7 @@ def a1c_order_was_automatically_generated():
print('')
-@timeit
+#@timeit
@cronjobs.register
def physician_adds_the_same_data_to_the_same_problem_concept_id_more_than_3_times():
"""
diff --git a/apps/emr/middleware.py b/apps/emr/middleware.py
index 10ee5ecd..e86d634d 100644
--- a/apps/emr/middleware.py
+++ b/apps/emr/middleware.py
@@ -15,13 +15,15 @@
along with this program. If not, see
"""
+from django.utils.deprecation import MiddlewareMixin
+
from .models import AccessLog
-class AccessLogMiddleware(object):
+class AccessLogMiddleware(MiddlewareMixin):
def process_request(self, request):
- if request.user.is_authenticated() and not request.path.startswith('/list_of') and not request.path.endswith(
+ if request.user.is_authenticated and not request.path.startswith('/list_of') and not request.path.endswith(
'/encounter/status'):
access_log = AccessLog(user=request.user, summary=request.path)
access_log.save()
diff --git a/apps/emr/migrations/0001_initial.py b/apps/emr/migrations/0001_initial.py
index 82f4abc1..dee81062 100644
--- a/apps/emr/migrations/0001_initial.py
+++ b/apps/emr/migrations/0001_initial.py
@@ -1,11 +1,10 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
+import emr.models
import mptt.fields
from django.conf import settings
-from django.db import models, migrations
-
-import emr.models
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -21,7 +20,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('datetime', models.DateTimeField(auto_now_add=True)),
('summary', models.TextField()),
- ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -41,7 +40,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('datetime', models.DateTimeField(auto_now_add=True)),
('object_id', models.PositiveIntegerField()),
- ('content_type', models.ForeignKey(to='contenttypes.ContentType')),
+ ('content_type', models.ForeignKey(to='contenttypes.ContentType', on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -50,7 +49,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('datetime', models.DateTimeField(auto_now_add=True)),
('summary', models.TextField()),
- ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -77,7 +76,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('form', models.TextField()),
- ('guideline', models.OneToOneField(to='emr.Guideline')),
+ ('guideline', models.OneToOneField(to='emr.Guideline', on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -86,7 +85,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('image', models.ImageField(upload_to=emr.models.get_path)),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -112,8 +111,8 @@ class Migration(migrations.Migration):
name='ProblemRelationship',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('source', models.ForeignKey(related_name='source', to='emr.Problem')),
- ('target', models.ForeignKey(related_name='target', to='emr.Problem')),
+ ('source', models.ForeignKey(related_name='source', to='emr.Problem', on_delete=models.DO_NOTHING)),
+ ('target', models.ForeignKey(related_name='target', to='emr.Problem', on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -121,8 +120,8 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('all', models.BooleanField(default=True)),
- ('other_patient', models.ForeignKey(related_name='other_patient', to=settings.AUTH_USER_MODEL)),
- ('patient', models.ForeignKey(related_name='target_patient', to=settings.AUTH_USER_MODEL)),
+ ('other_patient', models.ForeignKey(related_name='other_patient', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('patient', models.ForeignKey(related_name='target_patient', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -142,8 +141,8 @@ class Migration(migrations.Migration):
('todo', models.TextField()),
('accomplished', models.BooleanField(default=False)),
('notes', models.ManyToManyField(to='emr.TextNote', blank=True)),
- ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
- ('problem', models.ForeignKey(blank=True, to='emr.Problem', null=True)),
+ ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('problem', models.ForeignKey(blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -161,7 +160,7 @@ class Migration(migrations.Migration):
models.CharField(blank=True, max_length=6, choices=[(b'male', b'male'), (b'female', b'female')])),
('date_of_birth', models.DateField(null=True, blank=True)),
('phone_number', models.CharField(max_length=20, blank=True)),
- ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, unique=True)),
+ ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, unique=True, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -171,8 +170,8 @@ class Migration(migrations.Migration):
('datetime', models.DateTimeField(auto_now=True)),
('tracking_id', models.CharField(max_length=20, blank=True)),
('user_agent', models.CharField(max_length=200, blank=True)),
- ('patient', models.ForeignKey(related_name='viewed_patient', to=settings.AUTH_USER_MODEL)),
- ('viewer', models.ForeignKey(related_name='viewer', to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(related_name='viewed_patient', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('viewer', models.ForeignKey(related_name='viewer', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -180,7 +179,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('status', models.TextField()),
- ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
@@ -191,17 +190,17 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='problem',
name='parent',
- field=mptt.fields.TreeForeignKey(related_name='children', blank=True, to='emr.Problem', null=True),
+ field=mptt.fields.TreeForeignKey(related_name='children', blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='problem',
name='patient',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='patientimage',
name='problem',
- field=models.ForeignKey(blank=True, to='emr.Problem', null=True),
+ field=models.ForeignKey(blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='goal',
@@ -211,12 +210,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='goal',
name='patient',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='goal',
name='problem',
- field=models.ForeignKey(blank=True, to='emr.Problem', null=True),
+ field=models.ForeignKey(blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='encounter',
@@ -226,11 +225,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='encounter',
name='patient',
- field=models.ForeignKey(related_name='patient', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='patient', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='encounter',
name='physician',
- field=models.ForeignKey(related_name='physician', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='physician', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0002_auto_20150527_0747.py b/apps/emr/migrations/0002_auto_20150527_0747.py
index 2997b7fa..b6e3030a 100644
--- a/apps/emr/migrations/0002_auto_20150527_0747.py
+++ b/apps/emr/migrations/0002_auto_20150527_0747.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -26,7 +26,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='encounterevent',
name='encounter',
- field=models.ForeignKey(related_name='encounter_events', blank=True, to='emr.Encounter', null=True),
+ field=models.ForeignKey(related_name='encounter_events', blank=True, to='emr.Encounter', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='encounterevent',
@@ -37,11 +37,11 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='encounter',
name='patient',
- field=models.ForeignKey(related_name='patient_encounters', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='patient_encounters', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='encounter',
name='physician',
- field=models.ForeignKey(related_name='physician_encounters', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='physician_encounters', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0005_auto_20150723_0942.py b/apps/emr/migrations/0005_auto_20150723_0942.py
index 2a0dd3ac..d9bd9031 100644
--- a/apps/emr/migrations/0005_auto_20150723_0942.py
+++ b/apps/emr/migrations/0005_auto_20150723_0942.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,7 +13,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='textnote',
name='author',
- field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='userprofile',
diff --git a/apps/emr/migrations/0006_patientcontroller.py b/apps/emr/migrations/0006_patientcontroller.py
index 44608527..60491f7b 100644
--- a/apps/emr/migrations/0006_patientcontroller.py
+++ b/apps/emr/migrations/0006_patientcontroller.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,8 +17,8 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('author', models.BooleanField()),
- ('patient', models.ForeignKey(related_name='patient_physicians', to=settings.AUTH_USER_MODEL)),
- ('physician', models.ForeignKey(related_name='physician_patients', to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(related_name='patient_physicians', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('physician', models.ForeignKey(related_name='physician_patients', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0007_auto_20150824_0111.py b/apps/emr/migrations/0007_auto_20150824_0111.py
index 401db24e..bf8bf7d2 100644
--- a/apps/emr/migrations/0007_auto_20150824_0111.py
+++ b/apps/emr/migrations/0007_auto_20150824_0111.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,6 +14,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='userprofile',
name='user',
- field=models.OneToOneField(to=settings.AUTH_USER_MODEL),
+ field=models.OneToOneField(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0009_physicianteam.py b/apps/emr/migrations/0009_physicianteam.py
index de181eb4..efd0db63 100644
--- a/apps/emr/migrations/0009_physicianteam.py
+++ b/apps/emr/migrations/0009_physicianteam.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,8 +16,8 @@ class Migration(migrations.Migration):
name='PhysicianTeam',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('member', models.ForeignKey(related_name='user_leaders', to=settings.AUTH_USER_MODEL)),
- ('physician', models.ForeignKey(related_name='physician_helpers', to=settings.AUTH_USER_MODEL)),
+ ('member', models.ForeignKey(related_name='user_leaders', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('physician', models.ForeignKey(related_name='physician_helpers', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0011_auto_20150913_0210.py b/apps/emr/migrations/0011_auto_20150913_0210.py
index 4cd28244..71f4a7ce 100644
--- a/apps/emr/migrations/0011_auto_20150913_0210.py
+++ b/apps/emr/migrations/0011_auto_20150913_0210.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('note', models.TextField()),
('note_type', models.CharField(max_length=50, choices=[(b'wiki', b'Wiki'), (b'history', b'History')])),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
+ ('author', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.RemoveField(
@@ -29,6 +29,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='problemnote',
name='problem',
- field=models.ForeignKey(blank=True, to='emr.Problem', null=True),
+ field=models.ForeignKey(blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0012_auto_20150915_1120.py b/apps/emr/migrations/0012_auto_20150915_1120.py
index 1006a2eb..3f6e0c33 100644
--- a/apps/emr/migrations/0012_auto_20150915_1120.py
+++ b/apps/emr/migrations/0012_auto_20150915_1120.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problemnote',
name='author',
- field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0013_problemactivity.py b/apps/emr/migrations/0013_problemactivity.py
index f5b50a95..934e369b 100644
--- a/apps/emr/migrations/0013_problemactivity.py
+++ b/apps/emr/migrations/0013_problemactivity.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,8 +17,8 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('activity', models.TextField()),
- ('author', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
- ('problem', models.ForeignKey(to='emr.Problem')),
+ ('author', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('problem', models.ForeignKey(to='emr.Problem', on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0014_auto_20151014_0629.py b/apps/emr/migrations/0014_auto_20151014_0629.py
index 9857095c..c0d8fa4b 100644
--- a/apps/emr/migrations/0014_auto_20151014_0629.py
+++ b/apps/emr/migrations/0014_auto_20151014_0629.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problemactivity',
name='author',
- field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0015_auto_20151014_0651.py b/apps/emr/migrations/0015_auto_20151014_0651.py
index 7c98b9fb..9354ca00 100644
--- a/apps/emr/migrations/0015_auto_20151014_0651.py
+++ b/apps/emr/migrations/0015_auto_20151014_0651.py
@@ -4,24 +4,29 @@
import datetime
from django.db import models, migrations
-from django.utils.timezone import utc
+
+# from django.utils.timezone import utc
class Migration(migrations.Migration):
dependencies = [
- ('emr', '0014_auto_20151014_0629'),
+ ("emr", "0014_auto_20151014_0629"),
]
operations = [
migrations.AlterModelOptions(
- name='problemactivity',
- options={'ordering': ['-created_on']},
+ name="problemactivity",
+ options={"ordering": ["-created_on"]},
),
migrations.AddField(
- model_name='problemactivity',
- name='created_on',
- field=models.DateTimeField(default=datetime.datetime(2015, 10, 14, 11, 51, 35, 83848, tzinfo=utc),
- auto_now_add=True),
+ model_name="problemactivity",
+ name="created_on",
+ field=models.DateTimeField(
+ default=datetime.datetime(
+ 2015, 10, 14, 11, 51, 35, 83848, tzinfo=datetime.timezone.utc
+ ),
+ auto_now_add=True,
+ ),
preserve_default=False,
),
]
diff --git a/apps/emr/migrations/0016_encounterproblemrecord.py b/apps/emr/migrations/0016_encounterproblemrecord.py
index 8cab6a75..9e840674 100644
--- a/apps/emr/migrations/0016_encounterproblemrecord.py
+++ b/apps/emr/migrations/0016_encounterproblemrecord.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,8 +14,8 @@ class Migration(migrations.Migration):
name='EncounterProblemRecord',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('encounter', models.ForeignKey(related_name='encounter_problem_records', to='emr.Encounter')),
- ('problem', models.ForeignKey(related_name='problem_encounter_records', to='emr.Problem')),
+ ('encounter', models.ForeignKey(related_name='encounter_problem_records', to='emr.Encounter', on_delete=models.DO_NOTHING)),
+ ('problem', models.ForeignKey(related_name='problem_encounter_records', to='emr.Problem', on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0019_problemsegment.py b/apps/emr/migrations/0019_problemsegment.py
index d9f3fb75..bcbae081 100644
--- a/apps/emr/migrations/0019_problemsegment.py
+++ b/apps/emr/migrations/0019_problemsegment.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
('is_active', models.BooleanField(default=True)),
('authenticated', models.BooleanField(default=False)),
('start_date', models.DateField(auto_now_add=True)),
- ('problem', models.ForeignKey(to='emr.Problem')),
+ ('problem', models.ForeignKey(to='emr.Problem', on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0021_auto_20160111_2140.py b/apps/emr/migrations/0021_auto_20160111_2140.py
index 8b234576..030b9053 100644
--- a/apps/emr/migrations/0021_auto_20160111_2140.py
+++ b/apps/emr/migrations/0021_auto_20160111_2140.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,6 +18,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problemsegment',
name='problem',
- field=models.ForeignKey(related_name='problem_segment', to='emr.Problem'),
+ field=models.ForeignKey(related_name='problem_segment', to='emr.Problem', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0026_todocomment.py b/apps/emr/migrations/0026_todocomment.py
index 27ff85b1..c65b87e3 100644
--- a/apps/emr/migrations/0026_todocomment.py
+++ b/apps/emr/migrations/0026_todocomment.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,8 +18,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('comment', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('todo', models.ForeignKey(to='emr.ToDo')),
- ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('todo', models.ForeignKey(to='emr.ToDo', on_delete=models.DO_NOTHING)),
+ ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0027_auto_20160203_0257.py b/apps/emr/migrations/0027_auto_20160203_0257.py
index f73ea50d..d3b8d487 100644
--- a/apps/emr/migrations/0027_auto_20160203_0257.py
+++ b/apps/emr/migrations/0027_auto_20160203_0257.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,7 +16,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.TextField(null=True, blank=True)),
('css_class', models.TextField(null=True, blank=True)),
- ('todo', models.ForeignKey(related_name='todo_label', to='emr.ToDo')),
+ ('todo', models.ForeignKey(related_name='todo_label', to='emr.ToDo', on_delete=models.DO_NOTHING)),
],
),
migrations.AlterField(
diff --git a/apps/emr/migrations/0028_auto_20160218_0200.py b/apps/emr/migrations/0028_auto_20160218_0200.py
index c8a70df0..79612060 100644
--- a/apps/emr/migrations/0028_auto_20160218_0200.py
+++ b/apps/emr/migrations/0028_auto_20160218_0200.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,18 +18,18 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('attachment', models.FileField(upload_to=b'attachments/', blank=True)),
('datetime', models.DateTimeField(auto_now=True)),
- ('todo', models.ForeignKey(related_name='attachments', to='emr.ToDo')),
- ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('todo', models.ForeignKey(related_name='attachments', to='emr.ToDo', on_delete=models.DO_NOTHING)),
+ ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.AlterField(
model_name='todocomment',
name='todo',
- field=models.ForeignKey(related_name='comments', to='emr.ToDo'),
+ field=models.ForeignKey(related_name='comments', to='emr.ToDo', on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='todolabel',
name='todo',
- field=models.ForeignKey(related_name='labels', to='emr.ToDo'),
+ field=models.ForeignKey(related_name='labels', to='emr.ToDo', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0029_encountertodorecord.py b/apps/emr/migrations/0029_encountertodorecord.py
index 6b56dde6..84f5e561 100644
--- a/apps/emr/migrations/0029_encountertodorecord.py
+++ b/apps/emr/migrations/0029_encountertodorecord.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,8 +14,8 @@ class Migration(migrations.Migration):
name='EncounterTodoRecord',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('encounter', models.ForeignKey(related_name='encounter_todo_records', to='emr.Encounter')),
- ('todo', models.ForeignKey(related_name='todo_encounter_records', to='emr.ToDo')),
+ ('encounter', models.ForeignKey(related_name='encounter_todo_records', to='emr.Encounter', on_delete=models.DO_NOTHING)),
+ ('todo', models.ForeignKey(related_name='todo_encounter_records', to='emr.ToDo', on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0030_todoactivity.py b/apps/emr/migrations/0030_todoactivity.py
index 5d233a59..6573ad6f 100644
--- a/apps/emr/migrations/0030_todoactivity.py
+++ b/apps/emr/migrations/0030_todoactivity.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,10 +16,10 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('activity', models.TextField()),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('attachment', models.ForeignKey(blank=True, to='emr.ToDoAttachment', null=True)),
- ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
- ('comment', models.ForeignKey(blank=True, to='emr.ToDoComment', null=True)),
- ('todo', models.ForeignKey(to='emr.ToDo')),
+ ('attachment', models.ForeignKey(blank=True, to='emr.ToDoAttachment', null=True, on_delete=models.DO_NOTHING)),
+ ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
+ ('comment', models.ForeignKey(blank=True, to='emr.ToDoComment', null=True, on_delete=models.DO_NOTHING)),
+ ('todo', models.ForeignKey(to='emr.ToDo', on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-created_on'],
diff --git a/apps/emr/migrations/0033_label_patient.py b/apps/emr/migrations/0033_label_patient.py
index 6f73a92d..241aadfb 100644
--- a/apps/emr/migrations/0033_label_patient.py
+++ b/apps/emr/migrations/0033_label_patient.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -15,6 +15,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='label',
name='patient',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0034_auto_20160311_2028.py b/apps/emr/migrations/0034_auto_20160311_2028.py
index ec2ef7aa..d9dfa287 100644
--- a/apps/emr/migrations/0034_auto_20160311_2028.py
+++ b/apps/emr/migrations/0034_auto_20160311_2028.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -20,11 +20,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='todo',
name='user',
- field=models.ForeignKey(related_name='todo_owner', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='todo_owner', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='todo',
name='patient',
- field=models.ForeignKey(related_name='todo_patient', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='todo_patient', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0035_auto_20160312_0130.py b/apps/emr/migrations/0035_auto_20160312_0130.py
index 71fad1ca..47ca8984 100644
--- a/apps/emr/migrations/0035_auto_20160312_0130.py
+++ b/apps/emr/migrations/0035_auto_20160312_0130.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,13 +17,13 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('order', models.BigIntegerField(null=True, blank=True)),
- ('todo', models.ForeignKey(blank=True, to='emr.ToDo', null=True)),
- ('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
+ ('todo', models.ForeignKey(blank=True, to='emr.ToDo', null=True, on_delete=models.DO_NOTHING)),
+ ('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.AlterField(
model_name='userprofile',
name='user',
- field=models.OneToOneField(related_name='profile', to=settings.AUTH_USER_MODEL),
+ field=models.OneToOneField(related_name='profile', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0036_labeledtodolist.py b/apps/emr/migrations/0036_labeledtodolist.py
index 56ecb4ae..6a629f30 100644
--- a/apps/emr/migrations/0036_labeledtodolist.py
+++ b/apps/emr/migrations/0036_labeledtodolist.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.TextField()),
('labels', models.ManyToManyField(to='emr.Label', blank=True)),
- ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0038_auto_20160320_2319.py b/apps/emr/migrations/0038_auto_20160320_2319.py
index c6137140..0eecb5df 100644
--- a/apps/emr/migrations/0038_auto_20160320_2319.py
+++ b/apps/emr/migrations/0038_auto_20160320_2319.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -15,7 +15,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='label',
name='author',
- field=models.ForeignKey(related_name='label_author', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='label_author', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='label',
@@ -25,6 +25,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='label',
name='user',
- field=models.ForeignKey(related_name='label_user', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='label_user', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0040_auto_20160406_2334.py b/apps/emr/migrations/0040_auto_20160406_2334.py
index d5159635..9ddf484e 100644
--- a/apps/emr/migrations/0040_auto_20160406_2334.py
+++ b/apps/emr/migrations/0040_auto_20160406_2334.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -96,7 +96,7 @@ class Migration(migrations.Migration):
('value_string', models.TextField(null=True, blank=True)),
('value_unit', models.CharField(max_length=45, null=True, blank=True)),
('comments', models.TextField(null=True, blank=True)),
- ('observation', models.ForeignKey(related_name='observation_components', to='emr.Observation')),
+ ('observation', models.ForeignKey(related_name='observation_components', to='emr.Observation', on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -105,7 +105,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('code', models.CharField(max_length=2)),
('name', models.CharField(max_length=50)),
- ('country', models.ForeignKey(related_name='country_states', to='emr.Country')),
+ ('country', models.ForeignKey(related_name='country_states', to='emr.Country', on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -130,10 +130,10 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('start', models.DateField(null=True, blank=True)),
('end', models.DateField(null=True, blank=True)),
- ('address', models.ForeignKey(related_name='address_users', to='emr.Address')),
- ('type_code', models.ForeignKey(related_name='type_code_user_address', to='emr.AddressType')),
- ('use_code', models.ForeignKey(related_name='use_code_user_address', to='emr.AddressUse')),
- ('user', models.ForeignKey(related_name='user_addresses', to=settings.AUTH_USER_MODEL)),
+ ('address', models.ForeignKey(related_name='address_users', to='emr.Address', on_delete=models.DO_NOTHING)),
+ ('type_code', models.ForeignKey(related_name='type_code_user_address', to='emr.AddressType', on_delete=models.DO_NOTHING)),
+ ('use_code', models.ForeignKey(related_name='use_code_user_address', to='emr.AddressUse', on_delete=models.DO_NOTHING)),
+ ('user', models.ForeignKey(related_name='user_addresses', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -144,8 +144,8 @@ class Migration(migrations.Migration):
('rank', models.PositiveIntegerField(null=True, blank=True)),
('start', models.DateField(null=True, blank=True)),
('end', models.DateField(null=True, blank=True)),
- ('telecom', models.ForeignKey(related_name='telecom_users', to='emr.Telecom')),
- ('user', models.ForeignKey(related_name='user_telecoms', to=settings.AUTH_USER_MODEL)),
+ ('telecom', models.ForeignKey(related_name='telecom_users', to='emr.Telecom', on_delete=models.DO_NOTHING)),
+ ('user', models.ForeignKey(related_name='user_telecoms', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
@@ -156,36 +156,36 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='observation',
name='author',
- field=models.ForeignKey(related_name='observation_authors', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='observation_authors', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='observation',
name='encounter',
- field=models.ForeignKey(related_name='observation_encounters', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='observation_encounters', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='observation',
name='performer',
- field=models.ForeignKey(related_name='observation_performers', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='observation_performers', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='observation',
name='subject',
- field=models.ForeignKey(related_name='observation_subjects', to='emr.UserProfile'),
+ field=models.ForeignKey(related_name='observation_subjects', to='emr.UserProfile', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='city',
name='state',
- field=models.ForeignKey(related_name='state_cities', to='emr.State'),
+ field=models.ForeignKey(related_name='state_cities', to='emr.State', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='address',
name='city',
- field=models.ForeignKey(related_name='city_addresses', to='emr.City'),
+ field=models.ForeignKey(related_name='city_addresses', to='emr.City', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='userprofile',
name='marital_status',
- field=models.ForeignKey(blank=True, to='emr.MaritalStatus', null=True),
+ field=models.ForeignKey(blank=True, to='emr.MaritalStatus', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0041_observation_problem.py b/apps/emr/migrations/0041_observation_problem.py
index 7fcdb428..c279b953 100644
--- a/apps/emr/migrations/0041_observation_problem.py
+++ b/apps/emr/migrations/0041_observation_problem.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,7 +13,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='observation',
name='problem',
- field=models.ForeignKey(related_name='problem_observations', default=1, to='emr.Problem'),
+ field=models.ForeignKey(related_name='problem_observations', default=1, to='emr.Problem', on_delete=models.DO_NOTHING),
preserve_default=False,
),
]
diff --git a/apps/emr/migrations/0042_auto_20160414_0305.py b/apps/emr/migrations/0042_auto_20160414_0305.py
index 2c05b4fd..ebbf9b0c 100644
--- a/apps/emr/migrations/0042_auto_20160414_0305.py
+++ b/apps/emr/migrations/0042_auto_20160414_0305.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,13 +16,13 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
- ('observation', models.ForeignKey(related_name='observation_notes', to='emr.Observation')),
+ ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
+ ('observation', models.ForeignKey(related_name='observation_notes', to='emr.Observation', on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
model_name='todo',
name='observation',
- field=models.ForeignKey(related_name='observation_todos', blank=True, to='emr.Observation', null=True),
+ field=models.ForeignKey(related_name='observation_todos', blank=True, to='emr.Observation', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0046_observationcomponenttextnote.py b/apps/emr/migrations/0046_observationcomponenttextnote.py
index b8ec2987..8d73fcf7 100644
--- a/apps/emr/migrations/0046_observationcomponenttextnote.py
+++ b/apps/emr/migrations/0046_observationcomponenttextnote.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,9 +16,9 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
+ ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
('observation_component',
- models.ForeignKey(related_name='observation_component_notes', to='emr.ObservationComponent')),
+ models.ForeignKey(related_name='observation_component_notes', to='emr.ObservationComponent', on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0049_auto_20160428_2117.py b/apps/emr/migrations/0049_auto_20160428_2117.py
index 7c085447..635293a0 100644
--- a/apps/emr/migrations/0049_auto_20160428_2117.py
+++ b/apps/emr/migrations/0049_auto_20160428_2117.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.conf import settings
-from django.db import models, migrations
-
import emr.models
+from django.conf import settings
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -21,9 +20,9 @@ class Migration(migrations.Migration):
('order', emr.models.ListField(null=True, blank=True)),
('patient',
models.ForeignKey(related_name='patient_problem_order', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
('user', models.ForeignKey(related_name='user_problem_order', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.AlterModelOptions(
diff --git a/apps/emr/migrations/0050_observationcomponent_author.py b/apps/emr/migrations/0050_observationcomponent_author.py
index cff40000..ad4612db 100644
--- a/apps/emr/migrations/0050_observationcomponent_author.py
+++ b/apps/emr/migrations/0050_observationcomponent_author.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,6 +14,6 @@ class Migration(migrations.Migration):
model_name='observationcomponent',
name='author',
field=models.ForeignKey(related_name='observation_component_authors', blank=True, to='emr.UserProfile',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0051_auto_20160506_2007.py b/apps/emr/migrations/0051_auto_20160506_2007.py
index 34f0f043..f20f8ad6 100644
--- a/apps/emr/migrations/0051_auto_20160506_2007.py
+++ b/apps/emr/migrations/0051_auto_20160506_2007.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -20,7 +20,7 @@ class Migration(migrations.Migration):
('css_class', models.TextField(null=True, blank=True)),
('author',
models.ForeignKey(related_name='problem_label_author', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
diff --git a/apps/emr/migrations/0052_problemlabel_patient.py b/apps/emr/migrations/0052_problemlabel_patient.py
index 19d69d7a..5c754b41 100644
--- a/apps/emr/migrations/0052_problemlabel_patient.py
+++ b/apps/emr/migrations/0052_problemlabel_patient.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
model_name='problemlabel',
name='patient',
field=models.ForeignKey(related_name='problem_label_patient', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0053_labeledproblemlist.py b/apps/emr/migrations/0053_labeledproblemlist.py
index 4d5b9033..23551073 100644
--- a/apps/emr/migrations/0053_labeledproblemlist.py
+++ b/apps/emr/migrations/0053_labeledproblemlist.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.conf import settings
-from django.db import models, migrations
-
import emr.models
+from django.conf import settings
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -23,10 +22,10 @@ class Migration(migrations.Migration):
('labels', models.ManyToManyField(to='emr.ProblemLabel', blank=True)),
('patient',
models.ForeignKey(related_name='label_problem_list_patient', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
('user',
models.ForeignKey(related_name='label_problem_list_user', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0054_sharingpatient.py b/apps/emr/migrations/0054_sharingpatient.py
index 7efd1633..c737f053 100644
--- a/apps/emr/migrations/0054_sharingpatient.py
+++ b/apps/emr/migrations/0054_sharingpatient.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,8 +16,8 @@ class Migration(migrations.Migration):
name='SharingPatient',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('shared', models.ForeignKey(related_name='patient_shared', to=settings.AUTH_USER_MODEL)),
- ('sharing', models.ForeignKey(related_name='patient_sharing', to=settings.AUTH_USER_MODEL)),
+ ('shared', models.ForeignKey(related_name='patient_shared', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('sharing', models.ForeignKey(related_name='patient_sharing', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0065_commonproblem.py b/apps/emr/migrations/0065_commonproblem.py
index f9b63ae7..5c9f9297 100644
--- a/apps/emr/migrations/0065_commonproblem.py
+++ b/apps/emr/migrations/0065_commonproblem.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -22,8 +22,8 @@ class Migration(migrations.Migration):
choices=[(b'acute', b'Acute'), (b'chronic', b'Chronic')])),
('author',
models.ForeignKey(related_name='common_problem_author', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
- ('patient', models.ForeignKey(related_name='common_problem_patient', to=settings.AUTH_USER_MODEL)),
+ null=True, on_delete=models.DO_NOTHING)),
+ ('patient', models.ForeignKey(related_name='common_problem_patient', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0067_coloncancerscreening.py b/apps/emr/migrations/0067_coloncancerscreening.py
index f2104a39..a251b6c6 100644
--- a/apps/emr/migrations/0067_coloncancerscreening.py
+++ b/apps/emr/migrations/0067_coloncancerscreening.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,8 +16,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created_on', models.DateTimeField(auto_now_add=True)),
('patient_refused', models.BooleanField(default=False)),
- ('patient', models.ForeignKey(related_name='patient_colon_cancer', to='emr.UserProfile')),
- ('problem', models.ForeignKey(related_name='problem_colon_cancer', to='emr.Problem')),
+ ('patient', models.ForeignKey(related_name='patient_colon_cancer', to='emr.UserProfile', on_delete=models.DO_NOTHING)),
+ ('problem', models.ForeignKey(related_name='problem_colon_cancer', to='emr.Problem', on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-created_on'],
diff --git a/apps/emr/migrations/0068_auto_20160727_0144.py b/apps/emr/migrations/0068_auto_20160727_0144.py
index c0d4433b..a56fe879 100644
--- a/apps/emr/migrations/0068_auto_20160727_0144.py
+++ b/apps/emr/migrations/0068_auto_20160727_0144.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -24,10 +24,10 @@ class Migration(migrations.Migration):
('result', models.CharField(max_length=100, null=True, blank=True)),
('note', models.TextField(null=True, blank=True)),
('last_updated_date', models.DateField(auto_now=True)),
- ('author', models.ForeignKey(related_name='author_studies', to='emr.UserProfile')),
- ('colon', models.ForeignKey(related_name='colon_studies', to='emr.ColonCancerScreening')),
+ ('author', models.ForeignKey(related_name='author_studies', to='emr.UserProfile', on_delete=models.DO_NOTHING)),
+ ('colon', models.ForeignKey(related_name='colon_studies', to='emr.ColonCancerScreening', on_delete=models.DO_NOTHING)),
(
- 'last_updated_user', models.ForeignKey(related_name='last_updated_user_studies', to='emr.UserProfile')),
+ 'last_updated_user', models.ForeignKey(related_name='last_updated_user_studies', to='emr.UserProfile', on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-created_on'],
diff --git a/apps/emr/migrations/0069_auto_20160727_0351.py b/apps/emr/migrations/0069_auto_20160727_0351.py
index f914de2a..6b696da1 100644
--- a/apps/emr/migrations/0069_auto_20160727_0351.py
+++ b/apps/emr/migrations/0069_auto_20160727_0351.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -19,6 +19,6 @@ class Migration(migrations.Migration):
model_name='coloncancerstudy',
name='last_updated_user',
field=models.ForeignKey(related_name='last_updated_user_studies', blank=True, to='emr.UserProfile',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0070_auto_20160727_1134.py b/apps/emr/migrations/0070_auto_20160727_1134.py
index a816cfaa..c6761c16 100644
--- a/apps/emr/migrations/0070_auto_20160727_1134.py
+++ b/apps/emr/migrations/0070_auto_20160727_1134.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -23,12 +23,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='coloncancerstudyimage',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='coloncancerstudyimage',
name='colon',
- field=models.ForeignKey(blank=True, to='emr.ColonCancerScreening', null=True),
+ field=models.ForeignKey(blank=True, to='emr.ColonCancerScreening', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='coloncancerstudyimage',
diff --git a/apps/emr/migrations/0071_auto_20160727_2038.py b/apps/emr/migrations/0071_auto_20160727_2038.py
index eb68c50a..b9ffa83e 100644
--- a/apps/emr/migrations/0071_auto_20160727_2038.py
+++ b/apps/emr/migrations/0071_auto_20160727_2038.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,11 +17,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='coloncancerstudyimage',
name='study',
- field=models.ForeignKey(blank=True, to='emr.ColonCancerStudy', null=True),
+ field=models.ForeignKey(blank=True, to='emr.ColonCancerStudy', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='coloncancerstudyimage',
name='author',
- field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0072_auto_20160728_0421.py b/apps/emr/migrations/0072_auto_20160728_0421.py
index 1f83dbe9..e94f4aed 100644
--- a/apps/emr/migrations/0072_auto_20160728_0421.py
+++ b/apps/emr/migrations/0072_auto_20160728_0421.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,7 +16,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
+ ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -35,16 +35,16 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='coloncancerstudyimage',
name='study',
- field=models.ForeignKey(related_name='study_images', blank=True, to='emr.ColonCancerStudy', null=True),
+ field=models.ForeignKey(related_name='study_images', blank=True, to='emr.ColonCancerStudy', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='riskfactor',
name='colon',
- field=models.ForeignKey(related_name='colon_risk_factors', to='emr.ColonCancerScreening'),
+ field=models.ForeignKey(related_name='colon_risk_factors', to='emr.ColonCancerScreening', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='coloncancertextnote',
name='colon',
- field=models.ForeignKey(related_name='colon_notes', to='emr.ColonCancerScreening'),
+ field=models.ForeignKey(related_name='colon_notes', to='emr.ColonCancerScreening', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0073_auto_20160728_0958.py b/apps/emr/migrations/0073_auto_20160728_0958.py
index c60471be..16921809 100644
--- a/apps/emr/migrations/0073_auto_20160728_0958.py
+++ b/apps/emr/migrations/0073_auto_20160728_0958.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -19,6 +19,6 @@ class Migration(migrations.Migration):
model_name='coloncancerscreening',
name='last_risk_updated_user',
field=models.ForeignKey(related_name='last_risk_updated_user_colons', blank=True, to='emr.UserProfile',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0075_auto_20160809_2040.py b/apps/emr/migrations/0075_auto_20160809_2040.py
index 0ab705d0..3ccee131 100644
--- a/apps/emr/migrations/0075_auto_20160809_2040.py
+++ b/apps/emr/migrations/0075_auto_20160809_2040.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -19,6 +19,6 @@ class Migration(migrations.Migration):
model_name='todo',
name='colon_cancer',
field=models.ForeignKey(related_name='colon_cancer_todos', blank=True, to='emr.ColonCancerScreening',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0077_mystorytab_mystorytextcomponent_mystorytextcomponententry.py b/apps/emr/migrations/0077_mystorytab_mystorytextcomponent_mystorytextcomponententry.py
index 38070ec8..25acfb3f 100644
--- a/apps/emr/migrations/0077_mystorytab_mystorytextcomponent_mystorytextcomponententry.py
+++ b/apps/emr/migrations/0077_mystorytab_mystorytextcomponent_mystorytextcomponententry.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -20,7 +20,7 @@ class Migration(migrations.Migration):
('datetime', models.DateTimeField(auto_now_add=True)),
('private', models.BooleanField(default=True)),
('shared', models.BooleanField(default=True)),
- ('patient', models.ForeignKey(related_name='patient_story_tabs', to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(related_name='patient_story_tabs', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -32,9 +32,9 @@ class Migration(migrations.Migration):
('datetime', models.DateTimeField(auto_now_add=True)),
('last_updated_date', models.DateField(auto_now=True)),
('concept_id', models.CharField(max_length=20, null=True, blank=True)),
- ('last_updated_user', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
- ('patient', models.ForeignKey(related_name='patient_story_texts', to=settings.AUTH_USER_MODEL)),
- ('tab', models.ForeignKey(blank=True, to='emr.MyStoryTab', null=True)),
+ ('last_updated_user', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
+ ('patient', models.ForeignKey(related_name='patient_story_texts', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('tab', models.ForeignKey(blank=True, to='emr.MyStoryTab', null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -43,8 +43,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('text', models.TextField(null=True, blank=True)),
('datetime', models.DateTimeField(null=True, blank=True)),
- ('author', models.ForeignKey(related_name='author_story_text_entries', to=settings.AUTH_USER_MODEL)),
- ('component', models.ForeignKey(blank=True, to='emr.MyStoryTextComponent', null=True)),
+ ('author', models.ForeignKey(related_name='author_story_text_entries', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('component', models.ForeignKey(blank=True, to='emr.MyStoryTextComponent', null=True, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0078_auto_20160822_0343.py b/apps/emr/migrations/0078_auto_20160822_0343.py
index 6ec5131d..d7d97180 100644
--- a/apps/emr/migrations/0078_auto_20160822_0343.py
+++ b/apps/emr/migrations/0078_auto_20160822_0343.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -20,7 +20,7 @@ class Migration(migrations.Migration):
model_name='mystorytab',
name='author',
field=models.ForeignKey(related_name='author_story_tabs', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='mystorytab',
@@ -31,7 +31,7 @@ class Migration(migrations.Migration):
model_name='mystorytextcomponent',
name='author',
field=models.ForeignKey(related_name='author_story_texts', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='mystorytextcomponent',
@@ -46,17 +46,17 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='mystorytextcomponent',
name='last_updated_user',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='mystorytextcomponent',
name='tab',
- field=models.ForeignKey(related_name='my_story_tab_components', blank=True, to='emr.MyStoryTab', null=True),
+ field=models.ForeignKey(related_name='my_story_tab_components', blank=True, to='emr.MyStoryTab', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='mystorytextcomponententry',
name='component',
field=models.ForeignKey(related_name='text_component_entries', blank=True, to='emr.MyStoryTextComponent',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0080_auto_20160823_0244.py b/apps/emr/migrations/0080_auto_20160823_0244.py
index 706d8e65..c795fd88 100644
--- a/apps/emr/migrations/0080_auto_20160823_0244.py
+++ b/apps/emr/migrations/0080_auto_20160823_0244.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -24,8 +24,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('a1c', models.ForeignKey(related_name='a1c_notes', to='emr.AOneC')),
- ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
+ ('a1c', models.ForeignKey(related_name='a1c_notes', to='emr.AOneC', on_delete=models.DO_NOTHING)),
+ ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.RemoveField(
@@ -86,7 +86,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='observation',
name='subject',
- field=models.ForeignKey(related_name='observation_subjects', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='observation_subjects', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='observationcomponent',
@@ -104,16 +104,16 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='aonec',
name='observation',
- field=models.OneToOneField(related_name='observation_aonecs', to='emr.Observation'),
+ field=models.OneToOneField(related_name='observation_aonecs', to='emr.Observation', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='aonec',
name='problem',
- field=models.OneToOneField(related_name='problem_aonecs', to='emr.Problem'),
+ field=models.OneToOneField(related_name='problem_aonecs', to='emr.Problem', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='todo',
name='a1c',
- field=models.ForeignKey(related_name='a1c_todos', blank=True, to='emr.AOneC', null=True),
+ field=models.ForeignKey(related_name='a1c_todos', blank=True, to='emr.AOneC', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0081_auto_20160824_2229.py b/apps/emr/migrations/0081_auto_20160824_2229.py
index 57e476d9..7c7f5aa3 100644
--- a/apps/emr/migrations/0081_auto_20160824_2229.py
+++ b/apps/emr/migrations/0081_auto_20160824_2229.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.conf import settings
-from django.db import models, migrations
-
import emr.models
+from django.conf import settings
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -21,10 +20,10 @@ class Migration(migrations.Migration):
('order', emr.models.ListField(null=True, blank=True)),
('patient',
models.ForeignKey(related_name='patient_observation_order', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
('user',
models.ForeignKey(related_name='user_observation_order', blank=True, to=settings.AUTH_USER_MODEL,
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
diff --git a/apps/emr/migrations/0082_observationpintoproblem.py b/apps/emr/migrations/0082_observationpintoproblem.py
index f489d6f1..1ccca669 100644
--- a/apps/emr/migrations/0082_observationpintoproblem.py
+++ b/apps/emr/migrations/0082_observationpintoproblem.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,10 +14,10 @@ class Migration(migrations.Migration):
name='ObservationPinToProblem',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('author', models.ForeignKey(related_name='pin_authors', blank=True, to='emr.UserProfile', null=True)),
+ ('author', models.ForeignKey(related_name='pin_authors', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
('observation',
- models.ForeignKey(related_name='pin_observations', blank=True, to='emr.Observation', null=True)),
- ('problem', models.ForeignKey(related_name='pin_problems', blank=True, to='emr.Problem', null=True)),
+ models.ForeignKey(related_name='pin_observations', blank=True, to='emr.Observation', null=True, on_delete=models.DO_NOTHING)),
+ ('problem', models.ForeignKey(related_name='pin_problems', blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0083_observationunit.py b/apps/emr/migrations/0083_observationunit.py
index 5e077a4a..2e01318a 100644
--- a/apps/emr/migrations/0083_observationunit.py
+++ b/apps/emr/migrations/0083_observationunit.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,7 +16,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('value_unit', models.CharField(max_length=45, null=True, blank=True)),
('is_used', models.BooleanField(default=False)),
- ('observation', models.ForeignKey(related_name='observation_units', to='emr.Observation')),
+ ('observation', models.ForeignKey(related_name='observation_units', to='emr.Observation', on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0084_auto_20160905_2151.py b/apps/emr/migrations/0084_auto_20160905_2151.py
index 3003e585..93aeb0d8 100644
--- a/apps/emr/migrations/0084_auto_20160905_2151.py
+++ b/apps/emr/migrations/0084_auto_20160905_2151.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -15,13 +15,13 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=255, null=True, blank=True)),
- ('observation', models.ForeignKey(related_name='observation_fields', to='emr.Observation')),
+ ('observation', models.ForeignKey(related_name='observation_fields', to='emr.Observation', on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
model_name='observationcomponent',
name='field',
field=models.ForeignKey(related_name='observation_component_fields', blank=True, to='emr.ObservationField',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0086_auto_20160906_0142.py b/apps/emr/migrations/0086_auto_20160906_0142.py
index ef236ed5..4bda152d 100644
--- a/apps/emr/migrations/0086_auto_20160906_0142.py
+++ b/apps/emr/migrations/0086_auto_20160906_0142.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -22,7 +22,7 @@ class Migration(migrations.Migration):
('effective_datetime', models.DateTimeField(null=True, blank=True)),
('created_on', models.DateTimeField(auto_now_add=True, null=True)),
('author', models.ForeignKey(related_name='observation_value_authors', blank=True, to='emr.UserProfile',
- null=True)),
+ null=True, on_delete=models.DO_NOTHING)),
],
),
migrations.RemoveField(
@@ -44,6 +44,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='observationvalue',
name='component',
- field=models.ForeignKey(related_name='observation_component_values', to='emr.ObservationComponent'),
+ field=models.ForeignKey(related_name='observation_component_values', to='emr.ObservationComponent', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0087_auto_20160909_1150.py b/apps/emr/migrations/0087_auto_20160909_1150.py
index 30732743..42457b5a 100644
--- a/apps/emr/migrations/0087_auto_20160909_1150.py
+++ b/apps/emr/migrations/0087_auto_20160909_1150.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -24,6 +24,6 @@ class Migration(migrations.Migration):
model_name='mystorytextcomponententry',
name='author',
field=models.ForeignKey(related_name='author_story_text_entries', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0088_auto_20160912_0220.py b/apps/emr/migrations/0088_auto_20160912_0220.py
index 00bcef19..1da4f962 100644
--- a/apps/emr/migrations/0088_auto_20160912_0220.py
+++ b/apps/emr/migrations/0088_auto_20160912_0220.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,9 +16,9 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True)),
+ ('author', models.ForeignKey(blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
('observation_value',
- models.ForeignKey(related_name='observation_value_notes', to='emr.ObservationValue')),
+ models.ForeignKey(related_name='observation_value_notes', to='emr.ObservationValue', on_delete=models.DO_NOTHING)),
],
),
migrations.RemoveField(
diff --git a/apps/emr/migrations/0090_auto_20160919_2114.py b/apps/emr/migrations/0090_auto_20160919_2114.py
index 1e9646ec..4a7688ba 100644
--- a/apps/emr/migrations/0090_auto_20160919_2114.py
+++ b/apps/emr/migrations/0090_auto_20160919_2114.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -27,6 +27,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='todo',
name='group_id',
- field=models.ForeignKey(blank=True, to='emr.ToDoGroup', null=True),
+ field=models.ForeignKey(blank=True, to='emr.ToDoGroup', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0092_auto_20160920_1115.py b/apps/emr/migrations/0092_auto_20160920_1115.py
index 1ae2e565..1bcc81f5 100644
--- a/apps/emr/migrations/0092_auto_20160920_1115.py
+++ b/apps/emr/migrations/0092_auto_20160920_1115.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='todo',
name='group',
- field=models.ForeignKey(related_name='items', blank=True, to='emr.ToDoGroup', null=True),
+ field=models.ForeignKey(related_name='items', blank=True, to='emr.ToDoGroup', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0094_todogroup_patient.py b/apps/emr/migrations/0094_todogroup_patient.py
index 9e9cdd02..7d526ba4 100644
--- a/apps/emr/migrations/0094_todogroup_patient.py
+++ b/apps/emr/migrations/0094_todogroup_patient.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
model_name='todogroup',
name='patient',
field=models.ForeignKey(related_name='todo_group_patient', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0096_auto_20160929_2155.py b/apps/emr/migrations/0096_auto_20160929_2155.py
index f97218ff..1dece117 100644
--- a/apps/emr/migrations/0096_auto_20160929_2155.py
+++ b/apps/emr/migrations/0096_auto_20160929_2155.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField(null=True, blank=True)),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('patient', models.ForeignKey(related_name='patient_inr', to=settings.AUTH_USER_MODEL)),
+ ('patient', models.ForeignKey(related_name='patient_inr', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-created_on'],
@@ -31,8 +31,8 @@ class Migration(migrations.Migration):
('value', models.DecimalField(null=True, max_digits=10, decimal_places=4, blank=True)),
('effective_datetime', models.DateTimeField(null=True, blank=True)),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(related_name='author_inr_values', to='emr.UserProfile')),
- ('inr', models.ForeignKey(related_name='inr_values', to='emr.Inr')),
+ ('author', models.ForeignKey(related_name='author_inr_values', to='emr.UserProfile', on_delete=models.DO_NOTHING)),
+ ('inr', models.ForeignKey(related_name='inr_values', to='emr.Inr', on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-effective_datetime', '-created_on'],
@@ -46,8 +46,8 @@ class Migration(migrations.Migration):
('concept_id', models.CharField(max_length=20, null=True, blank=True)),
('current', models.BooleanField(default=True)),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(related_name='author_medications', to='emr.UserProfile')),
- ('inr', models.ForeignKey(related_name='inr_medications', to='emr.Inr')),
+ ('author', models.ForeignKey(related_name='author_medications', to='emr.UserProfile', on_delete=models.DO_NOTHING)),
+ ('inr', models.ForeignKey(related_name='inr_medications', to='emr.Inr', on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-created_on'],
@@ -58,9 +58,9 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('author',
- models.ForeignKey(related_name='author_pin_medications', blank=True, to='emr.UserProfile', null=True)),
- ('medication', models.ForeignKey(related_name='medication_pin_medications', to='emr.Medication')),
- ('problem', models.ForeignKey(related_name='problem_pin_medications', to='emr.Problem')),
+ models.ForeignKey(related_name='author_pin_medications', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
+ ('medication', models.ForeignKey(related_name='medication_pin_medications', to='emr.Medication', on_delete=models.DO_NOTHING)),
+ ('problem', models.ForeignKey(related_name='problem_pin_medications', to='emr.Problem', on_delete=models.DO_NOTHING)),
],
),
migrations.CreateModel(
@@ -69,8 +69,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(to='emr.UserProfile')),
- ('medication', models.ForeignKey(related_name='medication_notes', to='emr.Medication')),
+ ('author', models.ForeignKey(to='emr.UserProfile', on_delete=models.DO_NOTHING)),
+ ('medication', models.ForeignKey(related_name='medication_notes', to='emr.Medication', on_delete=models.DO_NOTHING)),
],
),
migrations.AlterModelOptions(
@@ -80,6 +80,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='todo',
name='inr',
- field=models.ForeignKey(related_name='inr_todos', blank=True, to='emr.Inr', null=True),
+ field=models.ForeignKey(related_name='inr_todos', blank=True, to='emr.Inr', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0097_auto_20160930_0441.py b/apps/emr/migrations/0097_auto_20160930_0441.py
index b3472256..1ea0f03c 100644
--- a/apps/emr/migrations/0097_auto_20160930_0441.py
+++ b/apps/emr/migrations/0097_auto_20160930_0441.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,6 +14,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='inr',
name='patient',
- field=models.OneToOneField(related_name='patient_inr', to=settings.AUTH_USER_MODEL),
+ field=models.OneToOneField(related_name='patient_inr', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0099_auto_20161014_0321.py b/apps/emr/migrations/0099_auto_20161014_0321.py
index d4c1faa1..56bdec69 100644
--- a/apps/emr/migrations/0099_auto_20161014_0321.py
+++ b/apps/emr/migrations/0099_auto_20161014_0321.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -28,7 +28,7 @@ class Migration(migrations.Migration):
model_name='mystorytextcomponententry',
name='patient',
field=models.ForeignKey(related_name='patient_story_text_entries', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='mystorytextcomponententry',
diff --git a/apps/emr/migrations/0101_auto_20161024_2210.py b/apps/emr/migrations/0101_auto_20161024_2210.py
index 3e55e43b..fabf1059 100644
--- a/apps/emr/migrations/0101_auto_20161024_2210.py
+++ b/apps/emr/migrations/0101_auto_20161024_2210.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -16,7 +16,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('note', models.TextField()),
('datetime', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(to='emr.UserProfile')),
+ ('author', models.ForeignKey(to='emr.UserProfile', on_delete=models.DO_NOTHING)),
],
),
migrations.RemoveField(
@@ -26,13 +26,13 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='inr',
name='author',
- field=models.ForeignKey(related_name='author_inrs', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='author_inrs', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='inr',
name='pin',
field=models.ForeignKey(related_name='observation_inrs', blank=True, to='emr.ObservationPinToProblem',
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='inrvalue',
@@ -52,16 +52,16 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='medication',
name='patient',
- field=models.ForeignKey(related_name='patient_medications', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='patient_medications', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inr',
name='patient',
- field=models.ForeignKey(related_name='patient_inrs', to='emr.UserProfile'),
+ field=models.ForeignKey(related_name='patient_inrs', to='emr.UserProfile', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='inrtextnote',
name='inr',
- field=models.ForeignKey(related_name='inr_notes', to='emr.Inr'),
+ field=models.ForeignKey(related_name='inr_notes', to='emr.Inr', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0102_auto_20161025_0156.py b/apps/emr/migrations/0102_auto_20161025_0156.py
index 779feb3f..177139e5 100644
--- a/apps/emr/migrations/0102_auto_20161025_0156.py
+++ b/apps/emr/migrations/0102_auto_20161025_0156.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -21,11 +21,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='inr',
name='observation',
- field=models.ForeignKey(related_name='observation_pin_inrs', blank=True, to='emr.Observation', null=True),
+ field=models.ForeignKey(related_name='observation_pin_inrs', blank=True, to='emr.Observation', null=True, on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='inr',
name='problem',
- field=models.ForeignKey(related_name='problem_pin_inrs', blank=True, to='emr.Problem', null=True),
+ field=models.ForeignKey(related_name='problem_pin_inrs', blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0105_auto_20161107_0102.py b/apps/emr/migrations/0105_auto_20161107_0102.py
index 7acdeb2d..6d7c0882 100644
--- a/apps/emr/migrations/0105_auto_20161107_0102.py
+++ b/apps/emr/migrations/0105_auto_20161107_0102.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,7 +17,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='problem',
name='inr',
- field=models.ForeignKey(related_name='inr_problem', blank=True, to='emr.Inr', null=True),
+ field=models.ForeignKey(related_name='inr_problem', blank=True, to='emr.Inr', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inr',
diff --git a/apps/emr/migrations/0107_auto_20161118_1709.py b/apps/emr/migrations/0107_auto_20161118_1709.py
index 549b9193..8e2620a3 100644
--- a/apps/emr/migrations/0107_auto_20161118_1709.py
+++ b/apps/emr/migrations/0107_auto_20161118_1709.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,7 +17,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='inr',
name='problem',
- field=models.ForeignKey(related_name='problem_pin_inrs', blank=True, to='emr.Problem', null=True),
+ field=models.ForeignKey(related_name='problem_pin_inrs', blank=True, to='emr.Problem', null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inrvalue',
diff --git a/apps/emr/migrations/0108_document.py b/apps/emr/migrations/0108_document.py
index dcdeaa86..f90b0223 100644
--- a/apps/emr/migrations/0108_document.py
+++ b/apps/emr/migrations/0108_document.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,9 +17,9 @@ class Migration(migrations.Migration):
('name', models.TextField()),
('path', models.TextField()),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(related_name='author_document', to='emr.UserProfile')),
+ ('author', models.ForeignKey(related_name='author_document', to='emr.UserProfile', on_delete=models.DO_NOTHING)),
('patient',
- models.ForeignKey(related_name='patient_pinned', blank=True, to='emr.UserProfile', null=True)),
+ models.ForeignKey(related_name='patient_pinned', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING)),
],
options={
'ordering': ['-created_on'],
diff --git a/apps/emr/migrations/0110_auto_20161127_1518.py b/apps/emr/migrations/0110_auto_20161127_1518.py
index 3bcf0e1b..1b56f4ca 100644
--- a/apps/emr/migrations/0110_auto_20161127_1518.py
+++ b/apps/emr/migrations/0110_auto_20161127_1518.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -32,21 +32,21 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='documenttodo',
name='document',
- field=models.ForeignKey(to='emr.Document'),
+ field=models.ForeignKey(to='emr.Document', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='documenttodo',
name='todo',
- field=models.ForeignKey(to='emr.ToDo'),
+ field=models.ForeignKey(to='emr.ToDo', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='documentproblem',
name='document',
- field=models.ForeignKey(to='emr.Document'),
+ field=models.ForeignKey(to='emr.Document', on_delete=models.DO_NOTHING),
),
migrations.AddField(
model_name='documentproblem',
name='problem',
- field=models.ForeignKey(to='emr.Problem'),
+ field=models.ForeignKey(to='emr.Problem', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0112_auto_20161206_1027.py b/apps/emr/migrations/0112_auto_20161206_1027.py
index d12a2620..a87461cb 100644
--- a/apps/emr/migrations/0112_auto_20161206_1027.py
+++ b/apps/emr/migrations/0112_auto_20161206_1027.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -23,13 +23,13 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='documentproblem',
name='author',
- field=models.ForeignKey(default=None, to='emr.UserProfile'),
+ field=models.ForeignKey(default=None, to='emr.UserProfile', on_delete=models.DO_NOTHING),
preserve_default=False,
),
migrations.AddField(
model_name='documenttodo',
name='author',
- field=models.ForeignKey(default=None, to='emr.UserProfile'),
+ field=models.ForeignKey(default=None, to='emr.UserProfile', on_delete=models.DO_NOTHING),
preserve_default=False,
),
migrations.AlterField(
diff --git a/apps/emr/migrations/0114_auto_20161213_0932.py b/apps/emr/migrations/0114_auto_20161213_0932.py
index 0dde3c9d..55a6d5a7 100644
--- a/apps/emr/migrations/0114_auto_20161213_0932.py
+++ b/apps/emr/migrations/0114_auto_20161213_0932.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -17,11 +17,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='inrtextnote',
name='patient',
- field=models.ForeignKey(related_name='patient_note', to='emr.UserProfile'),
+ field=models.ForeignKey(related_name='patient_note', to='emr.UserProfile', on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inrtextnote',
name='author',
- field=models.ForeignKey(related_name='author_note', to='emr.UserProfile'),
+ field=models.ForeignKey(related_name='author_note', to='emr.UserProfile', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0116_auto_20161214_1140.py b/apps/emr/migrations/0116_auto_20161214_1140.py
index d4ba8cf7..e4aa349a 100644
--- a/apps/emr/migrations/0116_auto_20161214_1140.py
+++ b/apps/emr/migrations/0116_auto_20161214_1140.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -48,12 +48,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='inr',
name='observation_value',
- field=models.OneToOneField(null=True, to='emr.ObservationValue'),
+ field=models.OneToOneField(null=True, to='emr.ObservationValue', on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inr',
name='author',
- field=models.ForeignKey(related_name='author_inr', blank=True, to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='author_inr', blank=True, to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
migrations.DeleteModel(
name='InrValue',
diff --git a/apps/emr/migrations/0117_inr_patient.py b/apps/emr/migrations/0117_inr_patient.py
index 6a126e5d..39c3c459 100644
--- a/apps/emr/migrations/0117_inr_patient.py
+++ b/apps/emr/migrations/0117_inr_patient.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='inr',
name='patient',
- field=models.ForeignKey(related_name='patient_inr', to='emr.UserProfile', null=True),
+ field=models.ForeignKey(related_name='patient_inr', to='emr.UserProfile', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0118_auto_20170103_1104.py b/apps/emr/migrations/0118_auto_20170103_1104.py
index 63dfe94d..0288f861 100644
--- a/apps/emr/migrations/0118_auto_20170103_1104.py
+++ b/apps/emr/migrations/0118_auto_20170103_1104.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -18,6 +18,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='inr',
name='observation_value',
- field=models.OneToOneField(related_name='inr', null=True, to='emr.ObservationValue'),
+ field=models.OneToOneField(related_name='inr', null=True, to='emr.ObservationValue', on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0122_todo_medication.py b/apps/emr/migrations/0122_todo_medication.py
index e71493dd..39267c64 100644
--- a/apps/emr/migrations/0122_todo_medication.py
+++ b/apps/emr/migrations/0122_todo_medication.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='todo',
name='medication',
- field=models.ForeignKey(to='emr.Medication', null=True),
+ field=models.ForeignKey(to='emr.Medication', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0128_auto_20170203_1508.py b/apps/emr/migrations/0128_auto_20170203_1508.py
index 19669225..30c4fd18 100644
--- a/apps/emr/migrations/0128_auto_20170203_1508.py
+++ b/apps/emr/migrations/0128_auto_20170203_1508.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -15,8 +15,8 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created_on', models.DateTimeField(auto_now_add=True)),
- ('encounter', models.ForeignKey(to='emr.Encounter')),
- ('observation_value', models.ForeignKey(to='emr.ObservationValue')),
+ ('encounter', models.ForeignKey(to='emr.Encounter', on_delete=models.DO_NOTHING)),
+ ('observation_value', models.ForeignKey(to='emr.ObservationValue', on_delete=models.DO_NOTHING)),
],
),
migrations.AddField(
diff --git a/apps/emr/migrations/0137_auto_20171113_0917.py b/apps/emr/migrations/0137_auto_20171113_0917.py
index 0e4f6c1e..72bf0d57 100644
--- a/apps/emr/migrations/0137_auto_20171113_0917.py
+++ b/apps/emr/migrations/0137_auto_20171113_0917.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
+from django.db import migrations, models
class Migration(migrations.Migration):
@@ -14,6 +14,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='textnote',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0138_auto_20171113_0942.py b/apps/emr/migrations/0138_auto_20171113_0942.py
index c027a3e0..b171c3cf 100644
--- a/apps/emr/migrations/0138_auto_20171113_0942.py
+++ b/apps/emr/migrations/0138_auto_20171113_0942.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ProblemActivity, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problemactivity',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0139_auto_20171113_1045.py b/apps/emr/migrations/0139_auto_20171113_1045.py
index f86577fa..c50159e4 100644
--- a/apps/emr/migrations/0139_auto_20171113_1045.py
+++ b/apps/emr/migrations/0139_auto_20171113_1045.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ProblemNote, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problemnote',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0140_auto_20171113_1132.py b/apps/emr/migrations/0140_auto_20171113_1132.py
index e9c966e2..aff27a05 100644
--- a/apps/emr/migrations/0140_auto_20171113_1132.py
+++ b/apps/emr/migrations/0140_auto_20171113_1132.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import TodoActivity, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='todoactivity',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0141_auto_20171114_1542.py b/apps/emr/migrations/0141_auto_20171114_1542.py
index fa55293a..a9d62816 100644
--- a/apps/emr/migrations/0141_auto_20171114_1542.py
+++ b/apps/emr/migrations/0141_auto_20171114_1542.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import Observation, UserProfile
@@ -31,25 +30,25 @@ class Migration(migrations.Migration):
model_name='observation',
name='author',
field=models.ForeignKey(related_name='observation_authors', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='observation',
name='encounter',
field=models.ForeignKey(related_name='observation_encounters', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='observation',
name='performer',
field=models.ForeignKey(related_name='observation_performers', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='observation',
name='subject',
field=models.ForeignKey(related_name='observation_subjects', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0142_auto_20171114_1802.py b/apps/emr/migrations/0142_auto_20171114_1802.py
index ae938a81..3d400063 100644
--- a/apps/emr/migrations/0142_auto_20171114_1802.py
+++ b/apps/emr/migrations/0142_auto_20171114_1802.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ObservationComponent, UserProfile
@@ -25,7 +24,7 @@ class Migration(migrations.Migration):
model_name='observationcomponent',
name='author',
field=models.ForeignKey(related_name='observation_component_authors', blank=True,
- to=settings.AUTH_USER_MODEL, null=True),
+ to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0143_auto_20171116_0131.py b/apps/emr/migrations/0143_auto_20171116_0131.py
index ac6e4755..90c73fd8 100644
--- a/apps/emr/migrations/0143_auto_20171116_0131.py
+++ b/apps/emr/migrations/0143_auto_20171116_0131.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ObservationValue, UserProfile
@@ -25,7 +24,7 @@ class Migration(migrations.Migration):
model_name='observationvalue',
name='author',
field=models.ForeignKey(related_name='observation_value_authors', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0144_auto_20171116_0153.py b/apps/emr/migrations/0144_auto_20171116_0153.py
index 52b7b371..d16c85ef 100644
--- a/apps/emr/migrations/0144_auto_20171116_0153.py
+++ b/apps/emr/migrations/0144_auto_20171116_0153.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ObservationPinToProblem, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='observationpintoproblem',
name='author',
- field=models.ForeignKey(related_name='pin_authors', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='pin_authors', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0145_auto_20171116_0217.py b/apps/emr/migrations/0145_auto_20171116_0217.py
index cbca5bce..885d12f5 100644
--- a/apps/emr/migrations/0145_auto_20171116_0217.py
+++ b/apps/emr/migrations/0145_auto_20171116_0217.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import AOneCTextNote, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='aonectextnote',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0146_auto_20171116_0223.py b/apps/emr/migrations/0146_auto_20171116_0223.py
index 09d4231d..9e7d52fe 100644
--- a/apps/emr/migrations/0146_auto_20171116_0223.py
+++ b/apps/emr/migrations/0146_auto_20171116_0223.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ObservationValueTextNote, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='observationvaluetextnote',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0147_auto_20171116_0232.py b/apps/emr/migrations/0147_auto_20171116_0232.py
index 3e502875..e9e59bba 100644
--- a/apps/emr/migrations/0147_auto_20171116_0232.py
+++ b/apps/emr/migrations/0147_auto_20171116_0232.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ColonCancerScreening, UserProfile
@@ -28,12 +27,12 @@ class Migration(migrations.Migration):
model_name='coloncancerscreening',
name='last_risk_updated_user',
field=models.ForeignKey(related_name='last_risk_updated_user_colons', blank=True,
- to=settings.AUTH_USER_MODEL, null=True),
+ to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='coloncancerscreening',
name='patient',
- field=models.ForeignKey(related_name='patient_colon_cancer', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='patient_colon_cancer', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0148_auto_20171116_1414.py b/apps/emr/migrations/0148_auto_20171116_1414.py
index 1044a43c..857f121d 100644
--- a/apps/emr/migrations/0148_auto_20171116_1414.py
+++ b/apps/emr/migrations/0148_auto_20171116_1414.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ColonCancerStudy, UserProfile
@@ -27,13 +26,13 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='coloncancerstudy',
name='author',
- field=models.ForeignKey(related_name='author_studies', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='author_studies', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='coloncancerstudy',
name='last_updated_user',
field=models.ForeignKey(related_name='last_updated_user_studies', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0149_auto_20171116_1429.py b/apps/emr/migrations/0149_auto_20171116_1429.py
index ec2c6275..cb928de1 100644
--- a/apps/emr/migrations/0149_auto_20171116_1429.py
+++ b/apps/emr/migrations/0149_auto_20171116_1429.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ColonCancerStudyImage, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='coloncancerstudyimage',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0150_auto_20171116_1439.py b/apps/emr/migrations/0150_auto_20171116_1439.py
index 1b1d542e..f2466796 100644
--- a/apps/emr/migrations/0150_auto_20171116_1439.py
+++ b/apps/emr/migrations/0150_auto_20171116_1439.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import ColonCancerTextNote, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='coloncancertextnote',
name='author',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0151_auto_20171116_1455.py b/apps/emr/migrations/0151_auto_20171116_1455.py
index b39ce59c..4f3159f8 100644
--- a/apps/emr/migrations/0151_auto_20171116_1455.py
+++ b/apps/emr/migrations/0151_auto_20171116_1455.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import Inr, UserProfile
@@ -26,12 +25,12 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='inr',
name='author',
- field=models.ForeignKey(related_name='author_inr', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='author_inr', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inr',
name='patient',
- field=models.ForeignKey(related_name='patient_inr', to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='patient_inr', to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0152_auto_20171116_1517.py b/apps/emr/migrations/0152_auto_20171116_1517.py
index 1b228a1d..370e7a7c 100644
--- a/apps/emr/migrations/0152_auto_20171116_1517.py
+++ b/apps/emr/migrations/0152_auto_20171116_1517.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import InrTextNote, UserProfile
@@ -30,11 +29,11 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='inrtextnote',
name='author',
- field=models.ForeignKey(related_name='author_note', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='author_note', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='inrtextnote',
name='patient',
- field=models.ForeignKey(related_name='patient_note', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='patient_note', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0153_auto_20171118_2249.py b/apps/emr/migrations/0153_auto_20171118_2249.py
index 1f95760d..ce8fab44 100644
--- a/apps/emr/migrations/0153_auto_20171118_2249.py
+++ b/apps/emr/migrations/0153_auto_20171118_2249.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import Medication, UserProfile
@@ -26,13 +25,13 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='medication',
name='author',
- field=models.ForeignKey(related_name='author_medications', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='author_medications', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='medication',
name='patient',
field=models.ForeignKey(related_name='patient_medications', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0154_auto_20171118_2305.py b/apps/emr/migrations/0154_auto_20171118_2305.py
index 2a7c11d8..a0b3e0b3 100644
--- a/apps/emr/migrations/0154_auto_20171118_2305.py
+++ b/apps/emr/migrations/0154_auto_20171118_2305.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import MedicationPinToProblem, UserProfile
@@ -25,7 +24,7 @@ class Migration(migrations.Migration):
model_name='medicationpintoproblem',
name='author',
field=models.ForeignKey(related_name='author_pin_medications', blank=True, to=settings.AUTH_USER_MODEL,
- null=True),
+ null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0155_auto_20171118_2313.py b/apps/emr/migrations/0155_auto_20171118_2313.py
index 72df327c..0dd44319 100644
--- a/apps/emr/migrations/0155_auto_20171118_2313.py
+++ b/apps/emr/migrations/0155_auto_20171118_2313.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import MedicationTextNote, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='medicationtextnote',
name='author',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0156_auto_20171118_2319.py b/apps/emr/migrations/0156_auto_20171118_2319.py
index 2ac0195e..946283e0 100644
--- a/apps/emr/migrations/0156_auto_20171118_2319.py
+++ b/apps/emr/migrations/0156_auto_20171118_2319.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import Document, UserProfile
@@ -26,12 +25,12 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='document',
name='author',
- field=models.ForeignKey(related_name='author_document', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(related_name='author_document', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.AlterField(
model_name='document',
name='patient',
- field=models.ForeignKey(related_name='patient_pinned', blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(related_name='patient_pinned', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0157_auto_20171118_2339.py b/apps/emr/migrations/0157_auto_20171118_2339.py
index a81c6587..ed72f61d 100644
--- a/apps/emr/migrations/0157_auto_20171118_2339.py
+++ b/apps/emr/migrations/0157_auto_20171118_2339.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import DocumentTodo, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='documenttodo',
name='author',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
),
migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0158_auto_20171118_2343.py b/apps/emr/migrations/0158_auto_20171118_2343.py
index 08bec326..f9bfa1ac 100644
--- a/apps/emr/migrations/0158_auto_20171118_2343.py
+++ b/apps/emr/migrations/0158_auto_20171118_2343.py
@@ -2,8 +2,7 @@
from __future__ import unicode_literals
from django.conf import settings
-from django.db import models, migrations
-
+from django.db import migrations, models
from emr.models import DocumentProblem, UserProfile
@@ -24,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='documentproblem',
name='author',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING),
), migrations.RunPython(changer_user_profile_id_to_user_id)
]
diff --git a/apps/emr/migrations/0161_narrative.py b/apps/emr/migrations/0161_narrative.py
index 0a17578a..df86ded7 100644
--- a/apps/emr/migrations/0161_narrative.py
+++ b/apps/emr/migrations/0161_narrative.py
@@ -18,9 +18,9 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('description', models.TextField()),
('created_at', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(related_name='owned_narratives', to=settings.AUTH_USER_MODEL)),
- ('parent', models.ForeignKey(related_name='child', to='emr.Narrative')),
- ('patient', models.ForeignKey(related_name='patient_narratives', to=settings.AUTH_USER_MODEL)),
+ ('author', models.ForeignKey(related_name='owned_narratives', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
+ ('parent', models.ForeignKey(related_name='child', to='emr.Narrative', on_delete=models.DO_NOTHING)),
+ ('patient', models.ForeignKey(related_name='patient_narratives', to=settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)),
],
),
]
diff --git a/apps/emr/migrations/0162_auto_20180624_1203.py b/apps/emr/migrations/0162_auto_20180624_1203.py
index 97443118..38c0e645 100644
--- a/apps/emr/migrations/0162_auto_20180624_1203.py
+++ b/apps/emr/migrations/0162_auto_20180624_1203.py
@@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='narrative',
name='parent',
- field=models.ForeignKey(related_name='child', to='emr.Narrative', null=True),
+ field=models.ForeignKey(related_name='child', to='emr.Narrative', null=True, on_delete=models.DO_NOTHING),
),
]
diff --git a/apps/emr/migrations/0168_onebmiperencounter.py b/apps/emr/migrations/0168_onebmiperencounter.py
new file mode 100644
index 00000000..cdeda85b
--- /dev/null
+++ b/apps/emr/migrations/0168_onebmiperencounter.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-21 14:23
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0167_encountermedication_vwmedications_vwproblems_vwtoppatients'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='OneBmiPerEncounter',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('encounter', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='encounter_bmi', to='emr.Encounter')),
+ ],
+ options={
+ 'db_table': 'emr_one_bmi_per_encounter',
+ },
+ ),
+ ]
diff --git a/apps/emr/migrations/0169_auto_20210921_1042.py b/apps/emr/migrations/0169_auto_20210921_1042.py
new file mode 100644
index 00000000..c7c360df
--- /dev/null
+++ b/apps/emr/migrations/0169_auto_20210921_1042.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-21 14:42
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0168_onebmiperencounter'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='encounter',
+ name='bmi_updated_count',
+ field=models.IntegerField(default=0),
+ ),
+ migrations.AlterModelTable(
+ name='onebmiperencounter',
+ table=None,
+ ),
+ ]
diff --git a/apps/emr/migrations/0170_auto_20210921_1047.py b/apps/emr/migrations/0170_auto_20210921_1047.py
new file mode 100644
index 00000000..017f9e46
--- /dev/null
+++ b/apps/emr/migrations/0170_auto_20210921_1047.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-21 14:47
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0169_auto_20210921_1042'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='onebmiperencounter',
+ name='encounter',
+ ),
+ migrations.DeleteModel(
+ name='OneBmiPerEncounter',
+ ),
+ ]
diff --git a/apps/emr/migrations/0171_auto_20210927_1553.py b/apps/emr/migrations/0171_auto_20210927_1553.py
new file mode 100644
index 00000000..ed184191
--- /dev/null
+++ b/apps/emr/migrations/0171_auto_20210927_1553.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-27 19:53
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0170_auto_20210921_1047'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='encounter',
+ name='bmi_updated_count',
+ ),
+ migrations.AddField(
+ model_name='userprofile',
+ name='weigth_updated_date',
+ field=models.DateTimeField(blank=True, null=True),
+ ),
+ ]
diff --git a/apps/emr/migrations/0172_auto_20210927_1612.py b/apps/emr/migrations/0172_auto_20210927_1612.py
new file mode 100644
index 00000000..d98907db
--- /dev/null
+++ b/apps/emr/migrations/0172_auto_20210927_1612.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-27 20:12
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0171_auto_20210927_1553'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='userprofile',
+ old_name='weigth_updated_date',
+ new_name='weight_updated_date',
+ ),
+ ]
diff --git a/apps/emr/migrations/0173_userprofile_height_changed_first_time.py b/apps/emr/migrations/0173_userprofile_height_changed_first_time.py
new file mode 100644
index 00000000..581ad8c2
--- /dev/null
+++ b/apps/emr/migrations/0173_userprofile_height_changed_first_time.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-28 05:53
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0172_auto_20210927_1612'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='userprofile',
+ name='height_changed_first_time',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/apps/emr/migrations/0174_userprofile_height_updated_date.py b/apps/emr/migrations/0174_userprofile_height_updated_date.py
new file mode 100644
index 00000000..d6583a51
--- /dev/null
+++ b/apps/emr/migrations/0174_userprofile_height_updated_date.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2021-09-28 06:25
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0173_userprofile_height_changed_first_time'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='userprofile',
+ name='height_updated_date',
+ field=models.DateTimeField(blank=True, null=True),
+ ),
+ ]
diff --git a/apps/emr/migrations/0175_auto_20220502_1532.py b/apps/emr/migrations/0175_auto_20220502_1532.py
new file mode 100644
index 00000000..2b7bbc5a
--- /dev/null
+++ b/apps/emr/migrations/0175_auto_20220502_1532.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2022-05-02 21:32
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0174_userprofile_height_updated_date'),
+ ]
+
+ operations = [
+ ]
\ No newline at end of file
diff --git a/apps/emr/migrations/0176_auto_20220615_0800.py b/apps/emr/migrations/0176_auto_20220615_0800.py
new file mode 100644
index 00000000..b17e4d9e
--- /dev/null
+++ b/apps/emr/migrations/0176_auto_20220615_0800.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2022-06-15 14:00
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0175_auto_20220502_1532'),
+ ]
+
+ operations = [
+ ]
\ No newline at end of file
diff --git a/apps/emr/migrations/0177_auto_20231101_1415.py b/apps/emr/migrations/0177_auto_20231101_1415.py
new file mode 100644
index 00000000..1632f652
--- /dev/null
+++ b/apps/emr/migrations/0177_auto_20231101_1415.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.3 on 2023-11-01 18:15
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [('emr', '0176_auto_20220615_0800')]
+
+ operations = [
+ migrations.AlterField(
+ model_name="DocumentTodo",
+ name="document",
+ field=models.ForeignKey(
+ to="Document", null=True, on_delete=models.SET_NULL
+ ),
+ )
+ ]
diff --git a/apps/emr/migrations/0178_auto_20231102_1330.py b/apps/emr/migrations/0178_auto_20231102_1330.py
new file mode 100644
index 00000000..120f6245
--- /dev/null
+++ b/apps/emr/migrations/0178_auto_20231102_1330.py
@@ -0,0 +1,27 @@
+# Generated by Django 4.2.3 on 2023-11-02 17:30
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("emr", "0177_auto_20231101_1415"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="EncounterObservationValue",
+ name="encounter",
+ field=models.ForeignKey(
+ to="Encounter", null=True, on_delete=models.SET_NULL
+ ),
+ ),
+ migrations.AlterField(
+ model_name="EncounterObservationValue",
+ name="observation_value",
+ field=models.ForeignKey(
+ to="ObservationValue", null=True, on_delete=models.SET_NULL
+ ),
+ )
+ ]
diff --git a/apps/emr/migrations/0179_auto_20231102_1337.py b/apps/emr/migrations/0179_auto_20231102_1337.py
new file mode 100644
index 00000000..3778d7d1
--- /dev/null
+++ b/apps/emr/migrations/0179_auto_20231102_1337.py
@@ -0,0 +1,27 @@
+# Generated by Django 4.2.3 on 2023-11-02 17:37
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("emr", "0178_auto_20231102_1330"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="EncounterProblemRecord",
+ name="encounter",
+ field=models.ForeignKey(
+ to="Encounter", null=True, on_delete=models.SET_NULL
+ ),
+ ),
+ migrations.AlterField(
+ model_name="EncounterProblemRecord",
+ name="problem",
+ field=models.ForeignKey(
+ to="Problem", null=True, on_delete=models.SET_NULL
+ ),
+ )
+ ]
diff --git a/apps/emr/migrations/0180_auto_20231102_1340.py b/apps/emr/migrations/0180_auto_20231102_1340.py
new file mode 100644
index 00000000..0dcd7529
--- /dev/null
+++ b/apps/emr/migrations/0180_auto_20231102_1340.py
@@ -0,0 +1,27 @@
+# Generated by Django 4.2.3 on 2023-11-02 17:40
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("emr", "0179_auto_20231102_1337"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="EncounterTodoRecord",
+ name="encounter",
+ field=models.ForeignKey(
+ to="Encounter", null=True, on_delete=models.SET_NULL
+ ),
+ ),
+ migrations.AlterField(
+ model_name="EncounterTodoRecord",
+ name="todo",
+ field=models.ForeignKey(
+ to="ToDo", null=True, on_delete=models.SET_NULL
+ ),
+ )
+ ]
diff --git a/apps/emr/migrations/0181_alter_coloncancerscreening_risk_and_more.py b/apps/emr/migrations/0181_alter_coloncancerscreening_risk_and_more.py
new file mode 100644
index 00000000..e20f8f5a
--- /dev/null
+++ b/apps/emr/migrations/0181_alter_coloncancerscreening_risk_and_more.py
@@ -0,0 +1,173 @@
+# Generated by Django 4.2.14 on 2024-07-23 18:59
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0180_auto_20231102_1340'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='coloncancerscreening',
+ name='risk',
+ field=models.CharField(choices=[('normal', 'Normal'), ('high', 'High')], default='normal', max_length=10),
+ ),
+ migrations.AlterField(
+ model_name='coloncancerstudyimage',
+ name='image',
+ field=models.ImageField(blank=True, upload_to='studies/'),
+ ),
+ migrations.AlterField(
+ model_name='commonproblem',
+ name='problem_type',
+ field=models.CharField(choices=[('acute', 'Acute'), ('chronic', 'Chronic')], default='acute', max_length=10),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='document',
+ field=models.FileField(null=True, upload_to='documents/'),
+ ),
+ migrations.AlterField(
+ model_name='documenttodo',
+ name='document',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='emr.document'),
+ ),
+ migrations.AlterField(
+ model_name='encounter',
+ name='recorder_status',
+ field=models.IntegerField(choices=[(0, 'isRecording'), (1, 'isPaused'), (2, 'isStopped')], default=0),
+ ),
+ migrations.AlterField(
+ model_name='encounterevent',
+ name='encounter',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='encounter_events', to='emr.encounter'),
+ ),
+ migrations.AlterField(
+ model_name='encounterevent',
+ name='summary',
+ field=models.TextField(default=''),
+ ),
+ migrations.AlterField(
+ model_name='encountermedication',
+ name='encounter',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='medications', to='emr.encounter'),
+ ),
+ migrations.AlterField(
+ model_name='encountermedication',
+ name='medication',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='encounters', to='emr.medication'),
+ ),
+ migrations.AlterField(
+ model_name='encounterobservationvalue',
+ name='encounter',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='emr.encounter'),
+ ),
+ migrations.AlterField(
+ model_name='encounterobservationvalue',
+ name='observation_value',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='emr.observationvalue'),
+ ),
+ migrations.AlterField(
+ model_name='encounterproblemrecord',
+ name='encounter',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='encounter_problem_records', to='emr.encounter'),
+ ),
+ migrations.AlterField(
+ model_name='encounterproblemrecord',
+ name='problem',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='problem_encounter_records', to='emr.problem'),
+ ),
+ migrations.AlterField(
+ model_name='encountertodorecord',
+ name='encounter',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='encounter_todo_records', to='emr.encounter'),
+ ),
+ migrations.AlterField(
+ model_name='encountertodorecord',
+ name='todo',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='todo_encounter_records', to='emr.todo'),
+ ),
+ migrations.AlterField(
+ model_name='observation',
+ name='graph',
+ field=models.TextField(default='Line'),
+ ),
+ migrations.AlterField(
+ model_name='observationunit',
+ name='observation',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='observation_units', to='emr.observation'),
+ ),
+ migrations.AlterField(
+ model_name='problem',
+ name='level',
+ field=models.PositiveIntegerField(editable=False),
+ ),
+ migrations.AlterField(
+ model_name='problem',
+ name='lft',
+ field=models.PositiveIntegerField(editable=False),
+ ),
+ migrations.AlterField(
+ model_name='problem',
+ name='rght',
+ field=models.PositiveIntegerField(editable=False),
+ ),
+ migrations.AlterField(
+ model_name='problemnote',
+ name='note_type',
+ field=models.CharField(choices=[('wiki', 'Wiki'), ('history', 'History')], max_length=50),
+ ),
+ migrations.AlterField(
+ model_name='taggedtodoorder',
+ name='status',
+ field=models.IntegerField(choices=[(0, 'New'), (1, 'Seen'), (2, 'Viewed')], default=0),
+ ),
+ migrations.AlterField(
+ model_name='textnote',
+ name='by',
+ field=models.CharField(choices=[('patient', 'patient'), ('physician', 'physician')], max_length=20),
+ ),
+ migrations.AlterField(
+ model_name='todo',
+ name='created_at',
+ field=models.PositiveIntegerField(choices=[(0, ''), (1, 'inr_widget')], default=0),
+ ),
+ migrations.AlterField(
+ model_name='todoattachment',
+ name='attachment',
+ field=models.FileField(blank=True, upload_to='attachments/'),
+ ),
+ migrations.AlterField(
+ model_name='userprofile',
+ name='cover_image',
+ field=models.ImageField(default='/static/images/cover.png', upload_to='cover_image/'),
+ ),
+ migrations.AlterField(
+ model_name='userprofile',
+ name='inr_target',
+ field=models.PositiveIntegerField(choices=[(1, '2-3'), (0, '2.5-3.5')], default=1),
+ ),
+ migrations.AlterField(
+ model_name='userprofile',
+ name='portrait_image',
+ field=models.ImageField(default='/static/images/avatar.png', upload_to='cover_image/'),
+ ),
+ migrations.AlterField(
+ model_name='userprofile',
+ name='role',
+ field=models.CharField(choices=[('patient', 'Patient'), ('physician', 'Physician'), ('mid-level', 'Mid Level PA/NP'), ('nurse', 'Nurse'), ('secretary', 'Secretary'), ('admin', 'Admin')], default='patient', max_length=10),
+ ),
+ migrations.AlterField(
+ model_name='userprofile',
+ name='sex',
+ field=models.CharField(blank=True, choices=[('male', 'Male'), ('female', 'Female')], max_length=6),
+ ),
+ migrations.AlterModelTable(
+ name='vwproblems',
+ table='vw_problems_full',
+ ),
+ ]
diff --git a/apps/emr/migrations/0182_observationvalue_note.py b/apps/emr/migrations/0182_observationvalue_note.py
new file mode 100644
index 00000000..be090e72
--- /dev/null
+++ b/apps/emr/migrations/0182_observationvalue_note.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.14 on 2024-07-26 15:25
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('emr', '0181_alter_coloncancerscreening_risk_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='observationvalue',
+ name='note',
+ field=models.TextField(blank=True, max_length=128, null=True),
+ ),
+ ]
diff --git a/apps/emr/models.py b/apps/emr/models.py
index 6ff9e863..9ea85f68 100644
--- a/apps/emr/models.py
+++ b/apps/emr/models.py
@@ -14,6 +14,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
+
import ast
import mimetypes
import os
@@ -21,159 +22,162 @@
import reversion
from django.contrib.auth.models import User
from django.db import models
+from django.utils import timezone
+from emr.managers import (
+ AOneCManager,
+ ColonCancerScreeningManager,
+ ColonCancerStudyManager,
+ EncounterManager,
+ ProblemManager,
+ ProblemNoteManager,
+ TodoManager,
+)
from mptt.models import MPTTModel, TreeForeignKey
-from emr.managers import AOneCManager, ProblemManager, ProblemNoteManager, EncounterManager, \
- TodoManager, ColonCancerScreeningManager, ColonCancerStudyManager
-
# DATA
ROLE_CHOICES = (
- ('patient', 'Patient'),
- ('physician', 'Physician'),
- ('mid-level', 'Mid Level PA/NP'),
- ('nurse', 'Nurse'),
- ('secretary', 'Secretary'),
- ('admin', 'Admin'),)
+ ("patient", "Patient"),
+ ("physician", "Physician"),
+ ("mid-level", "Mid Level PA/NP"),
+ ("nurse", "Nurse"),
+ ("secretary", "Secretary"),
+ ("admin", "Admin"),
+)
SEX_CHOICES = (
- ('male', 'Male'),
- ('female', 'Female'),)
+ ("male", "Male"),
+ ("female", "Female"),
+)
BY_CHOICES = (
- ('patient', 'patient'),
- ('physician', 'physician'),)
+ ("patient", "patient"),
+ ("physician", "physician"),
+)
NOTE_TYPE_CHOICES = (
- ('wiki', 'Wiki'),
- ('history', 'History'),)
+ ("wiki", "Wiki"),
+ ("history", "History"),
+)
COMMON_PROBLEM_TYPE_CHOICES = (
- ('acute', 'Acute'),
- ('chronic', 'Chronic'),)
+ ("acute", "Acute"),
+ ("chronic", "Chronic"),
+)
RISK_CHOICES = (
- ('normal', 'Normal'),
- ('high', 'High'),)
+ ("normal", "Normal"),
+ ("high", "High"),
+)
# Patient target INR goal(used within INR widget)
-TARGET_CHOICES = (
- (1, '2-3'),
- (0, '2.5-3.5')
-)
+TARGET_CHOICES = ((1, "2-3"), (0, "2.5-3.5"))
# Place where the item(Todo, Note, Value...) is generated
-BELONG_TO = (
- (0, ''),
- (1, 'inr_widget')
-)
+BELONG_TO = ((0, ""), (1, "inr_widget"))
# Observation type
OBSERVATION_TYPES = [
{
- 'name': 'a1c',
- 'loinc_code': '4548-4',
+ "name": "a1c",
+ "loinc_code": "4548-4",
},
{
- 'name': 'heart rate',
- 'unit': [
- 'bpm',
+ "name": "heart rate",
+ "unit": [
+ "bpm",
],
- 'loinc_code': '8867-4',
+ "loinc_code": "8867-4",
},
{
- 'name': 'blood pressure',
- 'unit': [
- 'mmHg',
+ "name": "blood pressure",
+ "unit": [
+ "mmHg",
],
- 'loinc_code': '85354-9',
- 'components': [
+ "loinc_code": "85354-9",
+ "components": [
{
- 'name': 'systolic',
- 'loinc_code': '8480-6',
+ "name": "systolic",
+ "loinc_code": "8480-6",
},
{
- 'name': 'diastolic',
- 'loinc_code': '8462-4',
+ "name": "diastolic",
+ "loinc_code": "8462-4",
},
],
},
{
- 'name': 'respiratory rate',
- 'unit': [
- 'breaths/min',
+ "name": "respiratory rate",
+ "unit": [
+ "breaths/min",
],
- 'loinc_code': '9279-1',
+ "loinc_code": "9279-1",
},
{
- 'name': 'body temperature',
- 'unit': [
- 'F',
- 'C',
+ "name": "body temperature",
+ "unit": [
+ "F",
+ "C",
],
- 'loinc_code': '8310-5',
+ "loinc_code": "8310-5",
},
{
- 'name': 'height',
- 'unit': [
- 'in',
- 'ft',
- 'cm',
+ "name": "height",
+ "unit": [
+ "in",
+ "ft",
+ "cm",
],
- 'loinc_code': '8302-2',
+ "loinc_code": "8302-2",
},
{
- 'name': 'weight',
- 'unit': [
- 'lb',
- 'kg',
+ "name": "weight",
+ "unit": [
+ "lb",
+ "kg",
],
- 'loinc_code': '3141-9',
+ "loinc_code": "3141-9",
},
{
- 'name': 'body mass index',
- 'unit': [
- 'bmi',
+ "name": "body mass index",
+ "unit": [
+ "bmi",
],
- 'loinc_code': '39156-5',
+ "loinc_code": "39156-5",
},
{
- 'name': 'oxygen saturation',
- 'unit': [
- '%',
+ "name": "oxygen saturation",
+ "unit": [
+ "%",
],
- 'loinc_code': '59408-5',
+ "loinc_code": "59408-5",
},
- {
- 'name': 'PHQ-2',
- 'loinc_code': '55757-9',
- 'unit': [],
- 'color': '#FFFF00'
- }
+ {"name": "PHQ-2", "loinc_code": "55757-9", "unit": [], "color": "#FFFF00"},
]
-VIEW_STATUS = (
- (0, 'New'),
- (1, 'Seen'),
- (2, 'Viewed')
-)
+VIEW_STATUS = ((0, "New"), (1, "Seen"), (2, "Viewed"))
-RECORDER_STATUS = (
- (0, 'isRecording'),
- (1, 'isPaused'),
- (2, 'isStopped')
-)
+RECORDER_STATUS = ((0, "isRecording"), (1, "isPaused"), (2, "isStopped"))
# Medication concept id set used on INR related problem
-MEDICATION_BLEEDING_RISK = {375383004, 375379004, 375378007, 319735007, 375374009,
- 319734006, 375380001, 375375005, 319733000, 319736008}
+MEDICATION_BLEEDING_RISK = {
+ 375383004,
+ 375379004,
+ 375378007,
+ 319735007,
+ 375374009,
+ 319734006,
+ 375380001,
+ 375375005,
+ 319733000,
+ 319736008,
+}
# UTILITIES
def get_path(instance, filename):
try:
- return '%s/%s/%s' % (
- instance.patient.id, instance.problem.id, filename)
+ return "%s/%s/%s" % (instance.patient.id, instance.problem.id, filename)
except:
- return '%s/%s' % (instance.patient.id, filename)
+ return "%s/%s" % (instance.patient.id, filename)
def set_document_path(instance, filename):
@@ -189,7 +193,7 @@ class ListField(models.TextField):
def __init__(self, *args, **kwargs):
super(ListField, self).__init__(*args, **kwargs)
- def from_db_value(self, value, expression, connection, context):
+ def from_db_value(self, value, expression, connection, context=None):
if not value:
value = []
@@ -211,7 +215,7 @@ def get_prep_value(self, value):
if value is None:
return value
- return unicode(value)
+ return value
def value_to_string(self, obj):
value = self._get_val_from_obj(obj)
@@ -220,6 +224,7 @@ def value_to_string(self, obj):
# Resources https://www.hl7.org/fhir/resourcelist.html
+
class MaritalStatus(models.Model):
code = models.CharField(max_length=1, null=True, blank=True)
display = models.CharField(max_length=20, null=True, blank=True)
@@ -227,16 +232,24 @@ class MaritalStatus(models.Model):
class UserProfile(models.Model):
- user = models.OneToOneField(User, related_name="profile")
- role = models.CharField(max_length=10, choices=ROLE_CHOICES, default='patient')
+ user = models.OneToOneField(
+ User, related_name="profile", on_delete=models.DO_NOTHING
+ )
+ role = models.CharField(max_length=10, choices=ROLE_CHOICES, default="patient")
data = models.TextField(blank=True)
- cover_image = models.ImageField(upload_to='cover_image/', default='/static/images/cover.png')
- portrait_image = models.ImageField(upload_to='cover_image/', default='/static/images/avatar.png')
+ cover_image = models.ImageField(
+ upload_to="cover_image/", default="/static/images/cover.png"
+ )
+ portrait_image = models.ImageField(
+ upload_to="cover_image/", default="/static/images/avatar.png"
+ )
summary = models.TextField(blank=True)
sex = models.CharField(max_length=6, choices=SEX_CHOICES, blank=True)
date_of_birth = models.DateTimeField(null=True, blank=True)
deceased_date = models.DateTimeField(null=True, blank=True)
- marital_status = models.ForeignKey(MaritalStatus, null=True, blank=True)
+ marital_status = models.ForeignKey(
+ MaritalStatus, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
phone_number = models.CharField(max_length=20, blank=True)
note = models.TextField(null=True, blank=True)
active_reason = models.TextField(null=True, blank=True)
@@ -244,36 +257,60 @@ class UserProfile(models.Model):
last_access_tagged_todo = models.DateTimeField(null=True, blank=True)
insurance_medicare = models.BooleanField(default=False)
insurance_note = models.TextField(blank=True)
+ weight_updated_date = models.DateTimeField(null=True, blank=True)
+ height_updated_date = models.DateTimeField(null=True, blank=True)
+ height_changed_first_time = models.BooleanField(default=False)
+
+ @property
+ def localized_date_of_birth(self):
+ if self.date_of_birth:
+ utc_date_of_birth = self.date_of_birth.date()
+ formatted_date = utc_date_of_birth.strftime("%m/%d/%Y")
+ return formatted_date
+ else:
+ return None
def __unicode__(self):
- return '%s' % (self.user.get_full_name())
+ return "%s" % (self.user.get_full_name())
# Many To Many Relation
class PatientController(models.Model):
- patient = models.ForeignKey(User, related_name='patient_physicians')
- physician = models.ForeignKey(User, related_name='physician_patients')
+ patient = models.ForeignKey(
+ User, related_name="patient_physicians", on_delete=models.DO_NOTHING
+ )
+ physician = models.ForeignKey(
+ User, related_name="physician_patients", on_delete=models.DO_NOTHING
+ )
author = models.BooleanField(default=False)
class PhysicianTeam(models.Model):
# Need to add save_admin to check if member is physician
- physician = models.ForeignKey(User, related_name='physician_helpers')
- member = models.ForeignKey(User, related_name='user_leaders')
+ physician = models.ForeignKey(
+ User, related_name="physician_helpers", on_delete=models.DO_NOTHING
+ )
+ member = models.ForeignKey(
+ User, related_name="user_leaders", on_delete=models.DO_NOTHING
+ )
class AccessLog(models.Model):
- user = models.ForeignKey(User)
+ user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
datetime = models.DateTimeField(auto_now_add=True)
summary = models.TextField()
def __unicode__(self):
- return '%s %s %s' % (self.user.username, self.datetime, self.summary)
+ return "%s %s %s" % (self.user.username, self.datetime, self.summary)
class Encounter(models.Model):
- physician = models.ForeignKey(User, related_name="physician_encounters")
- patient = models.ForeignKey(User, related_name="patient_encounters")
+ physician = models.ForeignKey(
+ User, related_name="physician_encounters", on_delete=models.DO_NOTHING
+ )
+ patient = models.ForeignKey(
+ User, related_name="patient_encounters", on_delete=models.DO_NOTHING
+ )
starttime = models.DateTimeField(auto_now_add=True)
stoptime = models.DateTimeField(null=True, blank=True)
audio = models.FileField(upload_to=get_path, blank=True)
@@ -282,13 +319,17 @@ class Encounter(models.Model):
video = models.FileField(upload_to=get_path, blank=True)
note = models.TextField(blank=True)
# deprecated should be loaded dynamically instead of storing in specific table
- encounter_document = models.ManyToManyField('ObservationValue', through='EncounterObservationValue')
+ encounter_document = models.ManyToManyField(
+ "ObservationValue", through="EncounterObservationValue"
+ )
objects = EncounterManager()
def __unicode__(self):
- return 'Patient: %s Time: %s' % (
- self.patient.get_full_name(), self.physician.get_full_name())
+ return "Patient: %s Time: %s" % (
+ self.patient.get_full_name(),
+ self.physician.get_full_name(),
+ )
def is_active(self):
if self.stoptime:
@@ -299,16 +340,25 @@ def is_active(self):
def duration(self):
if self.stoptime:
# Ignore microsecond part, min to seond
- return str(self.stoptime.replace(microsecond=0) - self.starttime.replace(microsecond=0))
+ return str(
+ self.stoptime.replace(microsecond=0)
+ - self.starttime.replace(microsecond=0)
+ )
else:
return 0
class EncounterEvent(models.Model):
- encounter = models.ForeignKey(Encounter, related_name='encounter_events', null=True, blank=True)
+ encounter = models.ForeignKey(
+ Encounter,
+ related_name="encounter_events",
+ null=True,
+ blank=True,
+ on_delete=models.SET_NULL,
+ )
datetime = models.DateTimeField(auto_now_add=True)
- summary = models.TextField(default='')
+ summary = models.TextField(default="")
is_favorite = models.BooleanField(default=False)
name_favorite = models.TextField(null=True, blank=True)
@@ -316,7 +366,7 @@ class EncounterEvent(models.Model):
timestamp = models.DateTimeField(null=True, blank=True)
def __unicode__(self):
- return unicode(self.summary)
+ return self.summary
def video_seconds(self):
if self.timestamp:
@@ -331,13 +381,13 @@ def video_timestamp(self):
h = seconds // 60
s = seconds % 60
if s < 10:
- s = '0' + str(s)
- return '%s:%s' % (h, s)
+ s = "0" + str(s)
+ return "%s:%s" % (h, s)
# @Deprecated
class TextNote(models.Model):
- author = models.ForeignKey(User, null=True, blank=True)
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
by = models.CharField(max_length=20, choices=BY_CHOICES)
note = models.TextField()
datetime = models.DateTimeField(auto_now_add=True)
@@ -349,16 +399,34 @@ def __unicode__(self):
class ProblemLabel(models.Model):
name = models.TextField(null=True, blank=True)
css_class = models.TextField(null=True, blank=True)
- author = models.ForeignKey(User, null=True, blank=True, related_name="problem_label_author")
- patient = models.ForeignKey(User, null=True, blank=True, related_name="problem_label_patient")
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="problem_label_author",
+ on_delete=models.DO_NOTHING,
+ )
+ patient = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="problem_label_patient",
+ on_delete=models.DO_NOTHING,
+ )
def __unicode__(self):
- return '%s' % (unicode(self.name))
+ return self.name
class Problem(MPTTModel):
- patient = models.ForeignKey(User)
- parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
+ patient = models.ForeignKey(User, on_delete=models.DO_NOTHING)
+ parent = TreeForeignKey(
+ "self",
+ null=True,
+ blank=True,
+ related_name="children",
+ on_delete=models.DO_NOTHING,
+ )
problem_name = models.CharField(max_length=200)
concept_id = models.CharField(max_length=20, blank=True, null=True)
is_controlled = models.BooleanField(default=False)
@@ -369,33 +437,55 @@ class Problem(MPTTModel):
old_problem_name = models.CharField(max_length=200, blank=True, null=True)
labels = models.ManyToManyField(ProblemLabel, blank=True)
- medications = models.ManyToManyField('Medication', through='MedicationPinToProblem')
- observations = models.ManyToManyField('Observation', through='ObservationPinToProblem')
+ medications = models.ManyToManyField("Medication", through="MedicationPinToProblem")
+ observations = models.ManyToManyField(
+ "Observation", through="ObservationPinToProblem"
+ )
objects = ProblemManager()
def __unicode__(self):
- return '%s %s' % (self.patient, self.problem_name)
+ return "%s %s" % (self.patient, self.problem_name)
class SharingPatient(models.Model):
- sharing = models.ForeignKey(User, related_name='patient_sharing')
- shared = models.ForeignKey(User, related_name='patient_shared')
- problems = models.ManyToManyField(Problem, blank=True, related_name="sharing_problems")
+ sharing = models.ForeignKey(
+ User, related_name="patient_sharing", on_delete=models.DO_NOTHING
+ )
+ shared = models.ForeignKey(
+ User, related_name="patient_shared", on_delete=models.DO_NOTHING
+ )
+ problems = models.ManyToManyField(
+ Problem, blank=True, related_name="sharing_problems"
+ )
is_my_story_shared = models.BooleanField(default=True)
class ProblemOrder(models.Model):
- patient = models.ForeignKey(User, null=True, blank=True, related_name="patient_problem_order")
- user = models.ForeignKey(User, null=True, blank=True, related_name="user_problem_order")
+ patient = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="patient_problem_order",
+ on_delete=models.DO_NOTHING,
+ )
+ user = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="user_problem_order",
+ on_delete=models.DO_NOTHING,
+ )
order = ListField(null=True, blank=True)
def __unicode__(self):
- return '%s' % (unicode(self.user.username))
+ return self.user.username
class ProblemSegment(models.Model):
- problem = models.ForeignKey(Problem, related_name='problem_segment')
+ problem = models.ForeignKey(
+ Problem, related_name="problem_segment", on_delete=models.DO_NOTHING
+ )
is_controlled = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
authenticated = models.BooleanField(default=False)
@@ -404,27 +494,32 @@ class ProblemSegment(models.Model):
start_time = models.TimeField(null=True, blank=True)
class Meta:
- ordering = ('start_date', 'start_time',)
+ ordering = (
+ "start_date",
+ "start_time",
+ )
def __unicode__(self):
- return '%s segment %s' % (self.problem.problem_name, self.start_date)
+ return "%s segment %s" % (self.problem.problem_name, self.start_date)
class ProblemActivity(models.Model):
- problem = models.ForeignKey(Problem)
- author = models.ForeignKey(User, null=True, blank=True)
+ problem = models.ForeignKey(Problem, on_delete=models.DO_NOTHING)
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
activity = models.TextField()
is_input_type = models.BooleanField(default=False)
is_output_type = models.BooleanField(default=False)
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
class ProblemNote(models.Model):
- author = models.ForeignKey(User, null=True, blank=True)
- problem = models.ForeignKey(Problem, null=True, blank=True)
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
+ problem = models.ForeignKey(
+ Problem, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
note = models.TextField()
note_type = models.CharField(choices=NOTE_TYPE_CHOICES, max_length=50)
created_on = models.DateTimeField(auto_now_add=True)
@@ -436,20 +531,34 @@ def __unicode__(self):
class LabeledProblemList(models.Model):
- user = models.ForeignKey(User, null=True, blank=True, related_name="label_problem_list_user")
- patient = models.ForeignKey(User, null=True, blank=True, related_name="label_problem_list_patient")
+ user = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="label_problem_list_user",
+ on_delete=models.DO_NOTHING,
+ )
+ patient = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="label_problem_list_patient",
+ on_delete=models.DO_NOTHING,
+ )
labels = models.ManyToManyField(ProblemLabel, blank=True)
name = models.TextField()
problem_list = ListField(null=True, blank=True)
note = models.TextField(null=True, blank=True)
def __unicode__(self):
- return '%s' % (unicode(self.name))
+ return self.name
class Goal(models.Model):
- patient = models.ForeignKey(User)
- problem = models.ForeignKey(Problem, null=True, blank=True)
+ patient = models.ForeignKey(User, on_delete=models.DO_NOTHING)
+ problem = models.ForeignKey(
+ Problem, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
goal = models.TextField()
is_controlled = models.BooleanField(default=False)
accomplished = models.BooleanField(default=False)
@@ -457,17 +566,23 @@ class Goal(models.Model):
start_date = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
- return '%s %s' % (unicode(self.patient), unicode(self.problem))
+ return f"{self.patient} {self.problem}"
class Label(models.Model):
name = models.TextField(null=True, blank=True)
css_class = models.TextField(null=True, blank=True)
- author = models.ForeignKey(User, null=True, blank=True, related_name="label_author")
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="label_author",
+ on_delete=models.DO_NOTHING,
+ )
is_all = models.BooleanField(default=False)
def __unicode__(self):
- return '%s' % (unicode(self.name))
+ return self.name
class ToDo(models.Model):
@@ -485,51 +600,86 @@ class ToDo(models.Model):
Tasks that are associated with a problem are part of that problem's activity log.
Tasks that are added or accomplished during an encounter are timestamped for that encounter and create annotations for that encounters media file.
"""
+
todo = models.TextField()
accomplished = models.BooleanField(default=False)
due_date = models.DateTimeField(blank=True, null=True)
- order = models.BigIntegerField(null=True, blank=True) # Position in normal todo list
-
- user = models.ForeignKey(User, null=True, blank=True, related_name="todo_owner") # Author
- patient = models.ForeignKey(User, null=True, blank=True, related_name="todo_patient")
+ order = models.BigIntegerField(
+ null=True, blank=True
+ ) # Position in normal todo list
+
+ user = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="todo_owner",
+ on_delete=models.DO_NOTHING,
+ ) # Author
+ patient = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="todo_patient",
+ on_delete=models.DO_NOTHING,
+ )
labels = models.ManyToManyField(Label, blank=True)
- a1c = models.ForeignKey("AOneC", null=True, blank=True, related_name="a1c_todos")
- problem = models.ForeignKey(Problem, null=True, blank=True)
- colon_cancer = models.ForeignKey("ColonCancerScreening", null=True, blank=True, related_name="colon_cancer_todos")
- notes = models.ManyToManyField(TextNote, blank=True) # aka comment should 1-n relation
+ a1c = models.ForeignKey(
+ "AOneC",
+ null=True,
+ blank=True,
+ related_name="a1c_todos",
+ on_delete=models.DO_NOTHING,
+ )
+ problem = models.ForeignKey(
+ Problem, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
+ colon_cancer = models.ForeignKey(
+ "ColonCancerScreening",
+ null=True,
+ blank=True,
+ related_name="colon_cancer_todos",
+ on_delete=models.DO_NOTHING,
+ )
+ notes = models.ManyToManyField(
+ TextNote, blank=True
+ ) # aka comment should 1-n relation
members = models.ManyToManyField(User, through="TaggedToDoOrder")
- medication = models.ForeignKey("Medication", null=True)
+ medication = models.ForeignKey("Medication", null=True, on_delete=models.DO_NOTHING)
- created_at = models.PositiveIntegerField(choices=BELONG_TO, default=0) # Place where todo is generated -> removed
+ created_at = models.PositiveIntegerField(
+ choices=BELONG_TO, default=0
+ ) # Place where todo is generated -> removed
created_on = models.DateTimeField(auto_now_add=True, null=True, blank=True)
objects = TodoManager()
def __unicode__(self):
- return '%s' % (unicode(self.todo))
+ return self.todo
class TaggedToDoOrder(models.Model):
order = models.BigIntegerField(null=True, blank=True)
status = models.IntegerField(choices=VIEW_STATUS, default=0)
- todo = models.ForeignKey(ToDo, null=True, blank=True)
- user = models.ForeignKey(User, null=True, blank=True)
+ todo = models.ForeignKey(ToDo, null=True, blank=True, on_delete=models.DO_NOTHING)
+ user = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
created_on = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def __unicode__(self):
- return '%s' % (unicode(self.todo.todo))
+ return self.todo.todo
class LabeledToDoList(models.Model):
name = models.TextField()
- user = models.ForeignKey(User) # author
+ user = models.ForeignKey(User, on_delete=models.DO_NOTHING) # author
labels = models.ManyToManyField(Label, blank=True)
- private = models.BooleanField(default=1) # 1 is save just for me, 0: is save for all user
+ private = models.BooleanField(
+ default=1
+ ) # 1 is save just for me, 0: is save for all user
todo_list = ListField(null=True, blank=True)
expanded = ListField(null=True, blank=True)
def __unicode__(self):
- return '%s' % (unicode(self.name))
+ return self.name
class Guideline(models.Model):
@@ -538,7 +688,7 @@ class Guideline(models.Model):
reference_url = models.CharField(max_length=400, blank=True)
def __unicode__(self):
- return '%s %s' % (self.concept_id, self.guideline)
+ return "%s %s" % (self.concept_id, self.guideline)
def get_form(self):
try:
@@ -548,7 +698,7 @@ def get_form(self):
class GuidelineForm(models.Model):
- guideline = models.OneToOneField(Guideline)
+ guideline = models.OneToOneField(Guideline, on_delete=models.DO_NOTHING)
form = models.TextField()
def __unicode__(self):
@@ -556,27 +706,35 @@ def __unicode__(self):
class PatientImage(models.Model):
- patient = models.ForeignKey(User)
- problem = models.ForeignKey(Problem, null=True, blank=True)
+ patient = models.ForeignKey(User, on_delete=models.DO_NOTHING)
+ problem = models.ForeignKey(
+ Problem, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
image = models.ImageField(upload_to=get_path)
datetime = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
- return '%s' % (unicode(self.patient))
+ return self.patient
class Sharing(models.Model):
- patient = models.ForeignKey(User, related_name='target_patient')
- other_patient = models.ForeignKey(User, related_name='other_patient')
+ patient = models.ForeignKey(
+ User, related_name="target_patient", on_delete=models.DO_NOTHING
+ )
+ other_patient = models.ForeignKey(
+ User, related_name="other_patient", on_delete=models.DO_NOTHING
+ )
all = models.BooleanField(default=True)
def __unicode__(self):
- return '%s %s' % (unicode(self.patient), unicode(self.other_patient))
+ return f"{self.patient} {self.other_patient}"
class Viewer(models.Model):
- patient = models.ForeignKey(User, related_name='viewed_patient')
- viewer = models.ForeignKey(User, related_name='viewer')
+ patient = models.ForeignKey(
+ User, related_name="viewed_patient", on_delete=models.DO_NOTHING
+ )
+ viewer = models.ForeignKey(User, related_name="viewer", on_delete=models.DO_NOTHING)
datetime = models.DateTimeField(auto_now=True)
# for tracking open browser instances e.g. multiple tabs
tracking_id = models.CharField(max_length=20, blank=True)
@@ -585,62 +743,76 @@ class Viewer(models.Model):
class ViewStatus(models.Model):
- patient = models.ForeignKey(User)
+ patient = models.ForeignKey(User, on_delete=models.DO_NOTHING)
status = models.TextField()
class ProblemRelationship(models.Model):
- source = models.ForeignKey(Problem, related_name="source")
- target = models.ForeignKey(Problem, related_name="target")
+ source = models.ForeignKey(
+ Problem, related_name="source", on_delete=models.DO_NOTHING
+ )
+ target = models.ForeignKey(
+ Problem, related_name="target", on_delete=models.DO_NOTHING
+ )
def __unicode__(self):
- return "%s %s" % (unicode(self.source), unicode(self.target))
+ return f"{self.source} {self.target}"
class EncounterProblemRecord(models.Model):
encounter = models.ForeignKey(
- Encounter, related_name='encounter_problem_records')
+ Encounter,
+ related_name="encounter_problem_records",
+ null=True,
+ on_delete=models.SET_NULL,
+ )
problem = models.ForeignKey(
- Problem, related_name='problem_encounter_records')
+ Problem,
+ related_name="problem_encounter_records",
+ null=True,
+ on_delete=models.SET_NULL,
+ )
def __unicode__(self):
- return "%s %s" % (unicode(self.encounter), unicode(self.problem))
+ return f"{self.encounter} {self.problem}"
class ToDoComment(models.Model):
- todo = models.ForeignKey(ToDo, related_name="comments")
- user = models.ForeignKey(User)
+ todo = models.ForeignKey(ToDo, related_name="comments", on_delete=models.DO_NOTHING)
+ user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
comment = models.TextField(null=True, blank=True)
datetime = models.DateTimeField(auto_now=True)
def __unicode__(self):
- return '%s' % (unicode(self.todo.todo))
+ return self.todo.todo
class ToDoAttachment(models.Model):
- todo = models.ForeignKey(ToDo, related_name="attachments")
- attachment = models.FileField(upload_to='attachments/', blank=True)
+ todo = models.ForeignKey(
+ ToDo, related_name="attachments", on_delete=models.DO_NOTHING
+ )
+ attachment = models.FileField(upload_to="attachments/", blank=True)
datetime = models.DateTimeField(auto_now=True)
- user = models.ForeignKey(User)
+ user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
def __unicode__(self):
- return '%s' % (unicode(self.attachment.path))
+ return self.attachment.path
def filename(self):
return os.path.basename(self.attachment.name)
def file_extension(self):
name, extension = os.path.splitext(self.attachment.name)
- extension = extension.replace('.', '')
+ extension = extension.replace(".", "")
return extension.upper()
def file_extension_lower(self):
name, extension = os.path.splitext(self.attachment.name)
- extension = extension.replace('.', '')
+ extension = extension.replace(".", "")
return extension
def is_image(self):
- extensions = ['jpg', 'png', 'jpeg']
+ extensions = ["jpg", "png", "jpeg"]
if self.file_extension_lower() in extensions:
return True
return False
@@ -648,30 +820,43 @@ def is_image(self):
class EncounterTodoRecord(models.Model):
encounter = models.ForeignKey(
- Encounter, related_name='encounter_todo_records')
+ Encounter,
+ related_name="encounter_todo_records",
+ null=True,
+ on_delete=models.SET_NULL,
+ )
todo = models.ForeignKey(
- ToDo, related_name='todo_encounter_records')
+ ToDo,
+ related_name="todo_encounter_records",
+ null=True,
+ on_delete=models.SET_NULL,
+ )
def __unicode__(self):
- return "%s %s" % (unicode(self.encounter), unicode(self.todo))
+ return f"{self.encounter} {self.todo}"
class TodoActivity(models.Model):
- todo = models.ForeignKey(ToDo)
- author = models.ForeignKey(User, null=True, blank=True)
- comment = models.ForeignKey(ToDoComment, null=True, blank=True)
- attachment = models.ForeignKey(ToDoAttachment, null=True, blank=True)
+ todo = models.ForeignKey(ToDo, on_delete=models.DO_NOTHING)
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
+ comment = models.ForeignKey(
+ ToDoComment, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
+ attachment = models.ForeignKey(
+ ToDoAttachment, null=True, blank=True, on_delete=models.DO_NOTHING
+ )
activity = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
class Observation(models.Model):
"""
https://www.hl7.org/fhir/observation.html
"""
+
name = models.CharField(max_length=255, null=True, blank=True)
# TODO: Check for deprecation
status = models.CharField(max_length=16, null=True, blank=True)
@@ -683,20 +868,44 @@ class Observation(models.Model):
# TODO: Check for deprecation
comments = models.TextField(null=True, blank=True)
color = models.CharField(max_length=7, null=True, blank=True)
- graph = models.TextField(default='Line')
- subject = models.ForeignKey(User, null=True, blank=True, related_name='observation_subjects')
+ graph = models.TextField(default="Line")
+ subject = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="observation_subjects",
+ on_delete=models.DO_NOTHING,
+ )
# TODO: Check for deprecation
- encounter = models.ForeignKey(User, null=True, blank=True, related_name='observation_encounters')
+ encounter = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="observation_encounters",
+ on_delete=models.DO_NOTHING,
+ )
# TODO: Check for deprecation
- performer = models.ForeignKey(User, null=True, blank=True, related_name='observation_performers')
- author = models.ForeignKey(User, null=True, blank=True, related_name='observation_authors')
+ performer = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="observation_performers",
+ on_delete=models.DO_NOTHING,
+ )
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="observation_authors",
+ on_delete=models.DO_NOTHING,
+ )
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
def __unicode__(self):
- return '%s' % (unicode(self.name))
+ return self.name
class ObservationComponent(models.Model):
@@ -705,63 +914,119 @@ class ObservationComponent(models.Model):
value pairs that share the same attributes. Examples include systolic and diastolic component observations for
blood pressure measurement and multiple component observations for genetics observations.
"""
+
name = models.CharField(max_length=255, null=True, blank=True)
status = models.CharField(max_length=16, null=True, blank=True)
component_code = models.CharField(max_length=10, null=True, blank=True)
- value_quantity = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True)
+ value_quantity = models.DecimalField(
+ max_digits=10, decimal_places=4, null=True, blank=True
+ )
value_codeableconcept = models.CharField(max_length=40, null=True, blank=True)
value_string = models.TextField(null=True, blank=True)
value_unit = models.CharField(max_length=45, null=True, blank=True)
comments = models.TextField(null=True, blank=True)
effective_datetime = models.DateTimeField(null=True, blank=True)
- observation = models.ForeignKey(Observation, related_name='observation_components')
- author = models.ForeignKey(User, null=True, blank=True, related_name='observation_component_authors')
+ observation = models.ForeignKey(
+ Observation, related_name="observation_components", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="observation_component_authors",
+ on_delete=models.DO_NOTHING,
+ )
created_on = models.DateTimeField(auto_now_add=True, null=True, blank=True)
class Meta:
- ordering = ['effective_datetime', 'created_on']
+ ordering = ["effective_datetime", "created_on"]
def __unicode__(self):
- return '%s' % (unicode(self.name))
+ return self.name
class ObservationUnit(models.Model):
- observation = models.ForeignKey(Observation, related_name='observation_units')
+ observation = models.ForeignKey(
+ Observation, related_name="observation_units", on_delete=models.CASCADE
+ )
value_unit = models.CharField(max_length=45, null=True, blank=True)
is_used = models.BooleanField(default=False)
class ObservationValue(models.Model):
status = models.CharField(max_length=16, null=True, blank=True)
- value_quantity = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True)
+ value_quantity = models.DecimalField(
+ max_digits=10, decimal_places=4, null=True, blank=True
+ )
# TODO: Refactor this field name
value_codeableconcept = models.CharField(max_length=40, null=True, blank=True)
value_string = models.TextField(null=True, blank=True)
value_unit = models.CharField(max_length=45, null=True, blank=True)
effective_datetime = models.DateTimeField(null=True, blank=True)
- component = models.ForeignKey(ObservationComponent, related_name='observation_component_values')
- author = models.ForeignKey(User, null=True, blank=True, related_name='observation_value_authors')
+ component = models.ForeignKey(
+ ObservationComponent,
+ related_name="observation_component_values",
+ on_delete=models.DO_NOTHING,
+ )
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="observation_value_authors",
+ on_delete=models.DO_NOTHING,
+ )
created_on = models.DateTimeField(auto_now_add=True, null=True, blank=True)
+ note = models.TextField(null=True, blank=True, max_length=128)
class Meta:
- ordering = ['effective_datetime', 'created_on']
+ ordering = ["effective_datetime", "created_on"]
class ObservationOrder(models.Model):
- patient = models.ForeignKey(User, null=True, blank=True, related_name="patient_observation_order")
- user = models.ForeignKey(User, null=True, blank=True, related_name="user_observation_order")
+ patient = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="patient_observation_order",
+ on_delete=models.DO_NOTHING,
+ )
+ user = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="user_observation_order",
+ on_delete=models.DO_NOTHING,
+ )
order = ListField(null=True, blank=True)
def __unicode__(self):
- return '%s' % (unicode(self.user.username))
+ return self.user.username
class ObservationPinToProblem(models.Model):
- author = models.ForeignKey(User, null=True, blank=True, related_name='pin_authors')
- observation = models.ForeignKey(Observation, null=True, blank=True, related_name='pin_observations')
- problem = models.ForeignKey(Problem, null=True, blank=True, related_name='pin_problems')
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="pin_authors",
+ on_delete=models.DO_NOTHING,
+ )
+ observation = models.ForeignKey(
+ Observation,
+ null=True,
+ blank=True,
+ related_name="pin_observations",
+ on_delete=models.DO_NOTHING,
+ )
+ problem = models.ForeignKey(
+ Problem,
+ null=True,
+ blank=True,
+ related_name="pin_problems",
+ on_delete=models.DO_NOTHING,
+ )
class Country(models.Model):
@@ -774,7 +1039,9 @@ def __unicode__(self):
class State(models.Model):
- country = models.ForeignKey(Country, related_name='country_states')
+ country = models.ForeignKey(
+ Country, related_name="country_states", on_delete=models.DO_NOTHING
+ )
code = models.CharField(max_length=2)
name = models.CharField(max_length=50)
@@ -783,7 +1050,9 @@ def __unicode__(self):
class City(models.Model):
- state = models.ForeignKey(State, related_name='state_cities')
+ state = models.ForeignKey(
+ State, related_name="state_cities", on_delete=models.DO_NOTHING
+ )
name = models.CharField(max_length=50)
def __unicode__(self):
@@ -793,7 +1062,9 @@ def __unicode__(self):
class Address(models.Model):
line1 = models.CharField(max_length=50)
line2 = models.CharField(max_length=50)
- city = models.ForeignKey(City, related_name='city_addresses')
+ city = models.ForeignKey(
+ City, related_name="city_addresses", on_delete=models.DO_NOTHING
+ )
zip = models.CharField(max_length=6)
zip4 = models.CharField(max_length=4, null=True, blank=True)
lat = models.DecimalField(max_digits=10, decimal_places=8, null=True, blank=True)
@@ -837,8 +1108,12 @@ def __unicode__(self):
class UserTelecom(models.Model):
- user = models.ForeignKey(User, related_name='user_telecoms')
- telecom = models.ForeignKey(Telecom, related_name='telecom_users')
+ user = models.ForeignKey(
+ User, related_name="user_telecoms", on_delete=models.DO_NOTHING
+ )
+ telecom = models.ForeignKey(
+ Telecom, related_name="telecom_users", on_delete=models.DO_NOTHING
+ )
use_code = models.CharField(max_length=6)
rank = models.PositiveIntegerField(null=True, blank=True)
start = models.DateTimeField(null=True, blank=True)
@@ -846,27 +1121,41 @@ class UserTelecom(models.Model):
class UserAddress(models.Model):
- user = models.ForeignKey(User, related_name='user_addresses')
- address = models.ForeignKey(Address, related_name='address_users')
- type_code = models.ForeignKey(AddressType, related_name='type_code_user_address')
- use_code = models.ForeignKey(AddressUse, related_name='use_code_user_address')
+ user = models.ForeignKey(
+ User, related_name="user_addresses", on_delete=models.DO_NOTHING
+ )
+ address = models.ForeignKey(
+ Address, related_name="address_users", on_delete=models.DO_NOTHING
+ )
+ type_code = models.ForeignKey(
+ AddressType, related_name="type_code_user_address", on_delete=models.DO_NOTHING
+ )
+ use_code = models.ForeignKey(
+ AddressUse, related_name="use_code_user_address", on_delete=models.DO_NOTHING
+ )
start = models.DateTimeField(null=True, blank=True)
end = models.DateTimeField(null=True, blank=True)
class AOneC(models.Model):
- problem = models.OneToOneField(Problem, related_name='problem_aonecs')
+ problem = models.OneToOneField(
+ Problem, related_name="problem_aonecs", on_delete=models.DO_NOTHING
+ )
todo_past_six_months = models.BooleanField(default=False)
patient_refused_A1C = models.BooleanField(default=False)
- observation = models.OneToOneField(Observation, related_name='observation_aonecs')
+ observation = models.OneToOneField(
+ Observation, related_name="observation_aonecs", on_delete=models.DO_NOTHING
+ )
objects = AOneCManager()
class AOneCTextNote(models.Model):
note = models.TextField()
- a1c = models.ForeignKey(AOneC, related_name='a1c_notes')
- author = models.ForeignKey(User, null=True, blank=True)
+ a1c = models.ForeignKey(
+ AOneC, related_name="a1c_notes", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
# TODO: Should be renamed to created_on
datetime = models.DateTimeField(auto_now_add=True)
@@ -876,8 +1165,12 @@ def __unicode__(self):
class ObservationValueTextNote(models.Model):
note = models.TextField()
- observation_value = models.ForeignKey(ObservationValue, related_name='observation_value_notes')
- author = models.ForeignKey(User, null=True, blank=True)
+ observation_value = models.ForeignKey(
+ ObservationValue,
+ related_name="observation_value_notes",
+ on_delete=models.DO_NOTHING,
+ )
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
# TODO: Should be renamed to created_on
datetime = models.DateTimeField(auto_now_add=True)
@@ -890,30 +1183,48 @@ class CommonProblem(models.Model):
"""
TODO: Should we managed two kind of problem OR one kind of problem having property to define it type
"""
+
problem_name = models.CharField(max_length=200)
concept_id = models.CharField(max_length=20, unique=True, null=True, blank=True)
- problem_type = models.CharField(max_length=10, choices=COMMON_PROBLEM_TYPE_CHOICES, default='acute')
- author = models.ForeignKey(User, null=True, blank=True, related_name="common_problem_author")
+ problem_type = models.CharField(
+ max_length=10, choices=COMMON_PROBLEM_TYPE_CHOICES, default="acute"
+ )
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="common_problem_author",
+ on_delete=models.DO_NOTHING,
+ )
class ColonCancerScreening(models.Model):
patient_refused = models.BooleanField(default=False)
not_appropriate = models.BooleanField(default=False)
- risk = models.CharField(max_length=10, choices=RISK_CHOICES, default='normal')
+ risk = models.CharField(max_length=10, choices=RISK_CHOICES, default="normal")
last_risk_updated_date = models.DateTimeField(null=True, blank=True)
todo_past_five_years = models.BooleanField(default=False)
patient_refused_on = models.DateTimeField(null=True, blank=True)
not_appropriate_on = models.DateTimeField(null=True, blank=True)
- problem = models.ForeignKey(Problem, related_name='problem_colon_cancer')
- patient = models.ForeignKey(User, related_name='patient_colon_cancer')
- last_risk_updated_user = models.ForeignKey(User, related_name='last_risk_updated_user_colons', null=True,
- blank=True)
+ problem = models.ForeignKey(
+ Problem, related_name="problem_colon_cancer", on_delete=models.DO_NOTHING
+ )
+ patient = models.ForeignKey(
+ User, related_name="patient_colon_cancer", on_delete=models.DO_NOTHING
+ )
+ last_risk_updated_user = models.ForeignKey(
+ User,
+ related_name="last_risk_updated_user_colons",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ )
created_on = models.DateTimeField(auto_now_add=True)
objects = ColonCancerScreeningManager()
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
class ColonCancerStudy(models.Model):
@@ -922,9 +1233,19 @@ class ColonCancerStudy(models.Model):
result = models.CharField(max_length=100, null=True, blank=True)
note = models.TextField(null=True, blank=True)
- colon = models.ForeignKey(ColonCancerScreening, related_name='colon_studies')
- author = models.ForeignKey(User, related_name='author_studies')
- last_updated_user = models.ForeignKey(User, related_name='last_updated_user_studies', null=True, blank=True)
+ colon = models.ForeignKey(
+ ColonCancerScreening, related_name="colon_studies", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(
+ User, related_name="author_studies", on_delete=models.DO_NOTHING
+ )
+ last_updated_user = models.ForeignKey(
+ User,
+ related_name="last_updated_user_studies",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ )
last_updated_date = models.DateTimeField(auto_now=True)
created_on = models.DateTimeField(auto_now_add=True)
@@ -932,31 +1253,43 @@ class ColonCancerStudy(models.Model):
objects = ColonCancerStudyManager()
class Meta:
- ordering = ['-study_date']
+ ordering = ["-study_date"]
class ColonCancerStudyImage(models.Model):
- image = models.ImageField(upload_to='studies/', blank=True)
- author = models.ForeignKey(User, null=True, blank=True)
- study = models.ForeignKey(ColonCancerStudy, null=True, blank=True, related_name="study_images")
+ image = models.ImageField(upload_to="studies/", blank=True)
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
+ study = models.ForeignKey(
+ ColonCancerStudy,
+ null=True,
+ blank=True,
+ related_name="study_images",
+ on_delete=models.DO_NOTHING,
+ )
datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def __unicode__(self):
- return '%s' % (unicode(self.patient))
+ return self.patient
def filename(self):
return os.path.basename(self.image.name)
class RiskFactor(models.Model):
- colon = models.ForeignKey(ColonCancerScreening, related_name='colon_risk_factors')
+ colon = models.ForeignKey(
+ ColonCancerScreening,
+ related_name="colon_risk_factors",
+ on_delete=models.DO_NOTHING,
+ )
factor = models.CharField(max_length=100, null=True, blank=True)
class ColonCancerTextNote(models.Model):
note = models.TextField()
- colon = models.ForeignKey(ColonCancerScreening, related_name='colon_notes')
- author = models.ForeignKey(User, null=True, blank=True)
+ colon = models.ForeignKey(
+ ColonCancerScreening, related_name="colon_notes", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
# TODO: Should be renamed to created_at
datetime = models.DateTimeField(auto_now_add=True)
@@ -970,9 +1303,16 @@ class MyStoryTab(models.Model):
private = models.BooleanField(default=True) # Only applied if author is Patient
is_all = models.BooleanField(default=False) # Only applied if author is Staff
- patient = models.ForeignKey(User, related_name="patient_story_tabs")
- author = models.ForeignKey(User, related_name="author_story_tabs", null=True,
- blank=True) # Patient, Patient who has accessed to the patient, Physician, Admin
+ patient = models.ForeignKey(
+ User, related_name="patient_story_tabs", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(
+ User,
+ related_name="author_story_tabs",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ ) # Patient, Patient who has accessed to the patient, Physician, Admin
datetime = models.DateTimeField(auto_now_add=True)
@@ -986,9 +1326,23 @@ class MyStoryTextComponent(models.Model):
# TODO: Why need both private & is_all
private = models.BooleanField(default=True)
is_all = models.BooleanField(default=False)
- tab = models.ForeignKey(MyStoryTab, null=True, blank=True, related_name="my_story_tab_components")
- patient = models.ForeignKey(User, related_name="patient_story_texts")
- author = models.ForeignKey(User, related_name="author_story_texts", null=True, blank=True)
+ tab = models.ForeignKey(
+ MyStoryTab,
+ null=True,
+ blank=True,
+ related_name="my_story_tab_components",
+ on_delete=models.DO_NOTHING,
+ )
+ patient = models.ForeignKey(
+ User, related_name="patient_story_texts", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(
+ User,
+ related_name="author_story_texts",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ )
# TODO: Should rename to created_at
datetime = models.DateTimeField(auto_now_add=True)
@@ -998,13 +1352,31 @@ def __unicode__(self):
class MyStoryTextComponentEntry(models.Model):
text = models.TextField(null=True, blank=True)
- component = models.ForeignKey(MyStoryTextComponent, null=True, blank=True, related_name="text_component_entries")
- patient = models.ForeignKey(User, related_name="patient_story_text_entries", null=True, blank=True)
- author = models.ForeignKey(User, related_name="author_story_text_entries", null=True, blank=True)
+ component = models.ForeignKey(
+ MyStoryTextComponent,
+ null=True,
+ blank=True,
+ related_name="text_component_entries",
+ on_delete=models.DO_NOTHING,
+ )
+ patient = models.ForeignKey(
+ User,
+ related_name="patient_story_text_entries",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ )
+ author = models.ForeignKey(
+ User,
+ related_name="author_story_text_entries",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ )
datetime = models.DateTimeField(auto_now_add=True, blank=True, null=True)
class Meta:
- ordering = ['-datetime']
+ ordering = ["-datetime"]
def __unicode__(self):
return "%s" % self.text
@@ -1016,22 +1388,33 @@ class Inr(models.Model):
One data point(ObservationValue) that can be entered and viewed in more than one way.
This is a common function for widgets and will need to be included in public API.
"""
+
current_dose = models.TextField(null=True, blank=True)
new_dosage = models.TextField(null=True, blank=True)
next_inr = models.DateTimeField(null=True, blank=True)
# Measured date & value is referred to observation data
- observation_value = models.OneToOneField(ObservationValue, related_name="inr", null=True)
+ observation_value = models.OneToOneField(
+ ObservationValue, related_name="inr", null=True, on_delete=models.DO_NOTHING
+ )
# Medication dosage author
- author = models.ForeignKey(User, related_name='author_inr', blank=True, null=True)
+ author = models.ForeignKey(
+ User,
+ related_name="author_inr",
+ blank=True,
+ null=True,
+ on_delete=models.DO_NOTHING,
+ )
# Can be in duplication with patient in observation value becuz this in one-2-on relationship
- patient = models.ForeignKey(User, related_name="patient_inr", null=True)
+ patient = models.ForeignKey(
+ User, related_name="patient_inr", null=True, on_delete=models.DO_NOTHING
+ )
created_on = models.DateTimeField(auto_now_add=True) # Medication dosage created
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
def __str__(self):
return "%s" % self.observation
@@ -1039,8 +1422,12 @@ def __str__(self):
class InrTextNote(models.Model):
note = models.TextField()
- author = models.ForeignKey(User, related_name="author_note")
- patient = models.ForeignKey(User, related_name="patient_note")
+ author = models.ForeignKey(
+ User, related_name="author_note", on_delete=models.DO_NOTHING
+ )
+ patient = models.ForeignKey(
+ User, related_name="patient_note", on_delete=models.DO_NOTHING
+ )
# TODO: Should be rename to created_at / created_on
datetime = models.DateTimeField(auto_now_add=True)
@@ -1055,27 +1442,49 @@ class Medication(models.Model):
current = models.BooleanField(default=True)
# Store original medication search string for change dosage function
search_str = models.TextField(null=True, blank=True)
- author = models.ForeignKey(User, related_name='author_medications')
- patient = models.ForeignKey(User, related_name="patient_medications", blank=True, null=True)
+ author = models.ForeignKey(
+ User, related_name="author_medications", on_delete=models.DO_NOTHING
+ )
+ patient = models.ForeignKey(
+ User,
+ related_name="patient_medications",
+ blank=True,
+ null=True,
+ on_delete=models.DO_NOTHING,
+ )
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
def __str__(self):
return "%s" % (self.name)
class MedicationPinToProblem(models.Model):
- author = models.ForeignKey(User, null=True, blank=True, related_name='author_pin_medications')
- medication = models.ForeignKey(Medication, related_name='medication_pin_medications')
- problem = models.ForeignKey(Problem, related_name='problem_pin_medications')
+ author = models.ForeignKey(
+ User,
+ null=True,
+ blank=True,
+ related_name="author_pin_medications",
+ on_delete=models.DO_NOTHING,
+ )
+ medication = models.ForeignKey(
+ Medication,
+ related_name="medication_pin_medications",
+ on_delete=models.DO_NOTHING,
+ )
+ problem = models.ForeignKey(
+ Problem, related_name="problem_pin_medications", on_delete=models.DO_NOTHING
+ )
class MedicationTextNote(models.Model):
note = models.TextField()
- medication = models.ForeignKey(Medication, related_name='medication_notes')
- author = models.ForeignKey(User)
+ medication = models.ForeignKey(
+ Medication, related_name="medication_notes", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(User, on_delete=models.DO_NOTHING)
datetime = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
@@ -1084,7 +1493,7 @@ def __unicode__(self):
# Merge class Document and ToDoAttachment
class Document(models.Model):
- document = models.FileField(upload_to='documents/', null=True)
+ document = models.FileField(upload_to="documents/", null=True)
document_name = models.TextField(blank=True)
labels = models.ManyToManyField(Label, blank=True)
# TODO: These should being migrated to using reverse relationship
@@ -1092,13 +1501,21 @@ class Document(models.Model):
# TODO: These should being migrated to using reverse relationship
problems = models.ManyToManyField(Problem, blank=True, through="DocumentProblem")
# This should be always be the user who sent the request by using request object instead of pass uid directly
- author = models.ForeignKey(User, related_name='author_document')
- patient = models.ForeignKey(User, related_name='patient_pinned', null=True, blank=True)
+ author = models.ForeignKey(
+ User, related_name="author_document", on_delete=models.DO_NOTHING
+ )
+ patient = models.ForeignKey(
+ User,
+ related_name="patient_pinned",
+ null=True,
+ blank=True,
+ on_delete=models.DO_NOTHING,
+ )
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
- ordering = ['-created_on']
+ ordering = ["-created_on"]
def __unicode__(self):
return "%s" % self.document.path
@@ -1108,12 +1525,12 @@ def filename(self):
def file_extension(self):
name, extension = os.path.splitext(self.document.name)
- extension = extension.replace('.', '')
+ extension = extension.replace(".", "")
return extension.upper()
def file_extension_lower(self):
name, extension = os.path.splitext(self.document.name)
- extension = extension.replace('.', '')
+ extension = extension.replace(".", "")
return extension
def file_mime_type(self):
@@ -1122,16 +1539,20 @@ def file_mime_type(self):
class DocumentTodo(models.Model):
- document = models.ForeignKey(Document)
- todo = models.ForeignKey(ToDo)
- author = models.ForeignKey(User) # User who attach document to the todo
+ document = models.ForeignKey(Document, null=True, on_delete=models.SET_NULL)
+ todo = models.ForeignKey(ToDo, on_delete=models.DO_NOTHING)
+ author = models.ForeignKey(
+ User, on_delete=models.DO_NOTHING
+ ) # User who attach document to the todo
created_on = models.DateTimeField(auto_now_add=True)
class DocumentProblem(models.Model):
- document = models.ForeignKey(Document)
- problem = models.ForeignKey(Problem)
- author = models.ForeignKey(User) # User who attach document to the problem
+ document = models.ForeignKey(Document, on_delete=models.DO_NOTHING)
+ problem = models.ForeignKey(Problem, on_delete=models.DO_NOTHING)
+ author = models.ForeignKey(
+ User, on_delete=models.DO_NOTHING
+ ) # User who attach document to the problem
created_on = models.DateTimeField(auto_now_add=True)
@@ -1142,25 +1563,33 @@ class GeneralSetting(models.Model):
browser_audio_recording - true/false
todo_popup_confirm - array of affected roles
"""
+
setting_key = models.TextField()
setting_value = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
class EncounterObservationValue(models.Model):
- encounter = models.ForeignKey(Encounter, null=False)
- observation_value = models.ForeignKey(ObservationValue, null=False)
+ encounter = models.ForeignKey(Encounter, null=True, on_delete=models.SET_NULL)
+ observation_value = models.ForeignKey(
+ ObservationValue, null=True, on_delete=models.SET_NULL
+ )
created_on = models.DateTimeField(auto_now_add=True)
class Narrative(models.Model):
- """
+ """ """
- """
description = models.TextField()
- patient = models.ForeignKey(User, related_name="patient_narratives")
- author = models.ForeignKey(User, related_name="owned_narratives")
- parent = models.ForeignKey("Narrative", related_name="child", null=True)
+ patient = models.ForeignKey(
+ User, related_name="patient_narratives", on_delete=models.DO_NOTHING
+ )
+ author = models.ForeignKey(
+ User, related_name="owned_narratives", on_delete=models.DO_NOTHING
+ )
+ parent = models.ForeignKey(
+ "Narrative", related_name="child", null=True, on_delete=models.DO_NOTHING
+ )
created_at = models.DateTimeField(auto_now_add=True)
@@ -1191,7 +1620,7 @@ class VWProblems(models.Model):
class Meta:
managed = False
- db_table = "vw_problems"
+ db_table = "vw_problems_full"
class VWTopPatients(models.Model):
@@ -1210,9 +1639,13 @@ class Meta:
class EncounterMedication(models.Model):
- encounter = models.ForeignKey(to=Encounter, related_name='medications')
- medication = models.ForeignKey(to=Medication, related_name='encounters')
+ encounter = models.ForeignKey(
+ to=Encounter, related_name="medications", on_delete=models.DO_NOTHING
+ )
+ medication = models.ForeignKey(
+ to=Medication, related_name="encounters", on_delete=models.DO_NOTHING
+ )
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
- db_table = 'emr_encounter_medication'
+ db_table = "emr_encounter_medication"
diff --git a/apps/emr/operations.py b/apps/emr/operations.py
index 50f2df5b..34be6bcb 100644
--- a/apps/emr/operations.py
+++ b/apps/emr/operations.py
@@ -15,11 +15,16 @@
along with this program. If not, see
"""
from common.views import timeit
-from .models import Encounter, EncounterEvent, EncounterTodoRecord
-from .models import EncounterProblemRecord
+from .models import (
+ Encounter,
+ EncounterEvent,
+ EncounterProblemRecord,
+ EncounterTodoRecord,
+)
-@timeit
+
+#@timeit
def op_add_event(physician, patient, event_summary, problem=None, todo=False):
latest_encounter = Encounter.objects.filter(physician=physician, patient=patient).order_by('-id')
@@ -47,7 +52,7 @@ def op_add_event(physician, patient, event_summary, problem=None, todo=False):
return True
-@timeit
+#@timeit
def op_add_todo_event(physician, patient, event_summary, todo=None, problem=False):
latest_encounter = Encounter.objects.filter(
physician=physician,
diff --git a/apps/emr/views.py b/apps/emr/views.py
index e194a8e9..5337300b 100644
--- a/apps/emr/views.py
+++ b/apps/emr/views.py
@@ -18,20 +18,31 @@
import os
from audioop import reverse
-from django.contrib.auth.decorators import user_passes_test, login_required
+from common.views import *
+from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib.auth.models import User
from django.core.checks import messages
+from django.db import connections
from django.views.generic import View
from django.views.static import serve
+from emr.models import (
+ Goal,
+ Guideline,
+ PatientImage,
+ Problem,
+ ProblemRelationship,
+ Sharing,
+ TextNote,
+ ToDo,
+ UserProfile,
+ Viewer,
+ ViewStatus,
+ VWProblems,
+)
+from emr.mysnomedct import VWProblemsSerializers
from ranged_response import RangedFileResponse
import project.settings as settings
-from common.views import *
-from emr.mysnomedct import VWProblemsSerializers
-from models import UserProfile, Problem, \
- Goal, ToDo, Guideline, TextNote, PatientImage, \
- Sharing, Viewer, \
- ViewStatus, ProblemRelationship, VWProblems
@user_passes_test(lambda u: u.is_superuser)
@@ -96,8 +107,7 @@ def list_users(request):
users = [{'is_patient': is_patient(user), 'username': user.username, 'firstname': user.first_name,
'lastname': user.last_name, 'id': user.id, 'sex': UserProfile.objects.get(user=user).sex,
'contact_number': UserProfile.objects.get(user=user).phone_number,
- 'birthday': UserProfile.objects.get(user=user).date_of_birth.strftime(
- '%m/%d/%Y') if UserProfile.objects.get(user=user).date_of_birth else ''} for user in
+ 'birthday': UserProfile.objects.get(user=user).localized_date_of_birth if UserProfile.objects.get(user=user).date_of_birth else ''} for user in
User.objects.all().order_by('first_name') if UserProfile.objects.filter(user=user)]
return HttpResponse(json.dumps(users), content_type="application/json")
@@ -402,17 +412,34 @@ def get(self, request, *args, **kwargs):
# ****************** New Code *********************
@login_required
def list_snomed_terms(request):
- query = request.GET['query']
- result = VWProblems.objects.using('snomedict').filter(term__contains="{0}".format(query)).all()
- results_holder = VWProblemsSerializers(result, many=True).data
- return ajax_response(results_holder)
+ query = f"%{request.GET['query']}%"
+ with connections["snomedict"].cursor() as cursor:
+ cursor.execute(
+ """
+ SELECT
+ vp.conceptid as code, vp.term
+ FROM
+ vw_problems vp
+ WHERE
+ vp.term LIKE %s;
+ """, [query]
+ )
+
+ problems_results = []
+ for row in cursor.fetchall():
+ problem_dict = {
+ "id": row[0],
+ "term": row[1]
+ }
+ problems_results.append(problem_dict)
+ return ajax_response(problems_results)
def has_read_permission(request, path):
""" Only show to authenticated users"""
# Note this could allow access to paths including ../..
# Don't use this simple check in production!
- return request.user.is_authenticated()
+ return request.user.is_authenticated
def serve_private_file(request, path):
@@ -424,7 +451,6 @@ def serve_private_file(request, path):
"""
if has_read_permission(request, path):
fileRes = serve(request, path, settings.MEDIA_ROOT, False)
- response = RangedFileResponse(request, fileRes.file_to_stream, fileRes._headers['content-type'][1])
- return response
+ return fileRes
else:
return HttpResponseForbidden()
diff --git a/apps/encounters_app/urls.py b/apps/encounters_app/urls.py
index 7fe1c2c0..5ef1e60d 100644
--- a/apps/encounters_app/urls.py
+++ b/apps/encounters_app/urls.py
@@ -14,27 +14,48 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
+from django.urls import re_path
from encounters_app.views import *
urlpatterns = [
-
- url(r'^patient/(?P\d+)/encounter/status$', patient_encounter_status),
- url(r'^patient/(?P\d+)/encounter/start$', create_new_encounter),
- url(r'^patient/(?P\d+)/encounter/(?P\d+)/update_note$', update_encounter_note),
- url(r'^patient/(?P\d+)/encounter/(?P\d+)/upload_video/$', upload_encounter_video),
- url(r'^patient/(?P\d+)/encounter/(?P\d+)/upload_audio/$', upload_encounter_audio),
- url(r'^patient/(?P\d+)/encounter/(?P\d+)/add_timestamp$', add_timestamp),
- url(r'^patient/(?P\d+)/encounter/(?P\d+)/delete$', delete_encounter),
-
- url(r'^encounter/(?P\d+)/stop$', stop_patient_encounter),
- url(r'^encounter/(?P\d+)/info$', get_encounter_info),
- url(r'^encounter/(?P\d+)/recorder_status$', toggle_encounter_recorder),
- url(r'^encounter/(?P\d+)/audio_played$', increase_audio_played_count),
- url(r'^encounter/(?P\d+)/event$', add_encounter_event),
- url(r'^encounter/add/event_summary$', add_event_summary),
-
- url(r'^encounter_event/(?P\d+)/mark_favorite$', mark_favorite),
- url(r'^encounter_event/(?P\d+)/name_favorite$', name_favorite),
+ re_path(
+ r"^patient/(?P\d+)/encounter/status$", patient_encounter_status
+ ),
+ re_path(r"^patient/(?P\d+)/encounter/start$", create_new_encounter),
+ re_path(
+ r"^patient/(?P\d+)/encounter/(?P\d+)/update_note$",
+ update_encounter_note,
+ ),
+ re_path(
+ r"^patient/(?P\d+)/encounter/(?P\d+)/upload_video/$",
+ upload_encounter_video,
+ ),
+ re_path(
+ r"^patient/(?P\d+)/encounter/(?P\d+)/upload_audio/$",
+ upload_encounter_audio,
+ ),
+ re_path(
+ r"^patient/(?P\d+)/encounter/(?P\d+)/add_timestamp$",
+ add_timestamp,
+ ),
+ re_path(
+ r"^patient/(?P\d+)/encounter/(?P\d+)/delete$",
+ delete_encounter,
+ ),
+ re_path(r"^encounter/(?P\d+)/stop$", stop_patient_encounter),
+ re_path(r"^encounter/(?P\d+)/info$", get_encounter_info),
+ re_path(
+ r"^encounter/(?P\d+)/recorder_status$", toggle_encounter_recorder
+ ),
+ re_path(
+ r"^encounter/(?P\d+)/audio_played$", increase_audio_played_count
+ ),
+ re_path(r"^encounter/(?P\d+)/event$", add_encounter_event),
+ re_path(r"^encounter/add/event_summary$", add_event_summary),
+ re_path(
+ r"^encounter_event/(?P\d+)/mark_favorite$", mark_favorite
+ ),
+ re_path(
+ r"^encounter_event/(?P\d+)/name_favorite$", name_favorite
+ ),
]
diff --git a/apps/encounters_app/views.py b/apps/encounters_app/views.py
index c7fb6c91..08806cbf 100644
--- a/apps/encounters_app/views.py
+++ b/apps/encounters_app/views.py
@@ -16,20 +16,24 @@
"""
from datetime import timedelta
+from common.views import *
from django.contrib.auth.decorators import login_required
from django.db.models import F
+from emr.models import (
+ Encounter,
+ EncounterEvent,
+ EncounterProblemRecord,
+ ObservationValue,
+)
+from problems_app.serializers import ProblemSerializer
from rest_framework.decorators import api_view
-from common.views import *
-from emr.models import Encounter, EncounterEvent, ObservationValue
-from emr.models import EncounterProblemRecord
-from problems_app.serializers import ProblemSerializer
-from .serializers import EncounterSerializer, EncounterEventSerializer
+from .serializers import EncounterEventSerializer, EncounterSerializer
# Encounter
@login_required
-@timeit
+#@timeit
def get_encounter_info(request, encounter_id):
resp = {}
encounter = Encounter.objects.get(id=encounter_id)
@@ -48,7 +52,7 @@ def get_encounter_info(request, encounter_id):
encounter_documents_holder = []
for document in encounter_documents:
encounter_documents_holder.append({
- 'name': document.component.__str__(),
+ 'name': document.component.name,
'value': '%g' % float(document.value_quantity),
'effective': document.effective_datetime.isoformat()
})
@@ -66,7 +70,7 @@ def get_encounter_info(request, encounter_id):
# Encounter
@login_required
@permissions_required(["add_encounter"])
-@timeit
+#@timeit
def patient_encounter_status(request, patient_id):
"""
Get patient latest encounter information
@@ -97,7 +101,7 @@ def patient_encounter_status(request, patient_id):
@permissions_required(["add_encounter"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def create_new_encounter(request, patient_id):
resp = {'success': False}
@@ -126,7 +130,7 @@ def create_new_encounter(request, patient_id):
# Encounter
@permissions_required(["add_encounter"])
@login_required
-@timeit
+#@timeit
def stop_patient_encounter(request, encounter_id):
resp = {'success': False}
if not Encounter.objects.filter(id=encounter_id, stoptime=None).exists():
@@ -144,7 +148,7 @@ def stop_patient_encounter(request, encounter_id):
@permissions_required(["add_event_summary"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_event_summary(request):
resp = {}
physician = request.user
@@ -159,7 +163,7 @@ def add_event_summary(request):
@permissions_required(["add_encounter"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def update_encounter_note(request, patient_id, encounter_id):
resp = {}
note = request.POST.get('note')
@@ -172,7 +176,7 @@ def update_encounter_note(request, patient_id, encounter_id):
@permissions_required(["add_encounter"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def upload_encounter_audio(request, patient_id, encounter_id):
resp = {}
audio_file = request.FILES['file']
@@ -187,7 +191,7 @@ def upload_encounter_audio(request, patient_id, encounter_id):
@permissions_required(["add_encounter"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def upload_encounter_video(request, patient_id, encounter_id):
resp = {}
video_file = request.FILES['file']
@@ -202,7 +206,7 @@ def upload_encounter_video(request, patient_id, encounter_id):
@permissions_required(["add_encounter_timestamp"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_timestamp(request, patient_id, encounter_id):
resp = {}
timestamp = request.POST.get('timestamp', 0)
@@ -216,7 +220,7 @@ def add_timestamp(request, patient_id, encounter_id):
@permissions_required(["add_encounter_timestamp"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def mark_favorite(request, encounter_event_id):
resp = {}
is_favorite = True if request.POST.get('is_favorite', False) == "true" else False
@@ -228,7 +232,7 @@ def mark_favorite(request, encounter_event_id):
@permissions_required(["add_encounter_timestamp"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def name_favorite(request, encounter_event_id):
resp = {}
name_favorite = request.POST.get("name_favorite", "")
@@ -240,7 +244,7 @@ def name_favorite(request, encounter_event_id):
@permissions_required(["delete_encounter"])
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def delete_encounter(request, patient_id, encounter_id):
Encounter.objects.get(id=encounter_id).delete()
resp = {'success': True}
@@ -248,7 +252,7 @@ def delete_encounter(request, patient_id, encounter_id):
@login_required
-@timeit
+#@timeit
def increase_audio_played_count(request, encounter_id):
resp = {}
Encounter.objects.filter(id=encounter_id).update(audio_played_count=F('audio_played_count') + 1)
@@ -259,7 +263,7 @@ def increase_audio_played_count(request, encounter_id):
@login_required
@permissions_required(["add_encounter_timestamp"])
@api_view(["POST"])
-@timeit
+#@timeit
def add_encounter_event(request, encounter_id):
"""
Add encounter event
@@ -275,7 +279,7 @@ def add_encounter_event(request, encounter_id):
@login_required
-@timeit
+#@timeit
def toggle_encounter_recorder(request, encounter_id):
"""
Update encounter's recorder status and make a timestamp
diff --git a/apps/goals_app/urls.py b/apps/goals_app/urls.py
index ab451b29..ab3dac41 100644
--- a/apps/goals_app/urls.py
+++ b/apps/goals_app/urls.py
@@ -14,14 +14,20 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
+from django.urls import re_path
from goals_app.views import *
urlpatterns = [
- url(r'^goal/(?P\d+)/info$', get_goal_info),
- url(r'^patient/(?P\d+)/goals/add/new_goal$', add_patient_goal),
- url(r'^patient/(?P\d+)/goal/(?P\d+)/add_note$', add_goal_note),
- url(r'^patient/(?P\d+)/goal/(?P\d+)/update_status$', update_goal_status),
- url(r'^patient/(?P\d+)/goal/(?P\d+)/change_name$', change_name),
+ re_path(r"^goal/(?P\d+)/info$", get_goal_info),
+ re_path(r"^patient/(?P\d+)/goals/add/new_goal$", add_patient_goal),
+ re_path(
+ r"^patient/(?P\d+)/goal/(?P\d+)/add_note$", add_goal_note
+ ),
+ re_path(
+ r"^patient/(?P\d+)/goal/(?P\d+)/update_status$",
+ update_goal_status,
+ ),
+ re_path(
+ r"^patient/(?P\d+)/goal/(?P\d+)/change_name$", change_name
+ ),
]
diff --git a/apps/goals_app/views.py b/apps/goals_app/views.py
index fe413a6a..8ee69ae6 100644
--- a/apps/goals_app/views.py
+++ b/apps/goals_app/views.py
@@ -14,20 +14,20 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
+from common.views import *
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
-
-from common.views import *
-from emr.models import UserProfile, Goal, TextNote
+from emr.models import Goal, TextNote, UserProfile
from emr.operations import op_add_event
from emr.serializers import TextNoteSerializer
from problems_app.operations import add_problem_activity
+
from .serializers import GoalSerializer
# Goals
@login_required
-@timeit
+#@timeit
def get_goal_info(request, goal_id):
resp = {}
goal = Goal.objects.get(id=goal_id)
@@ -40,7 +40,7 @@ def get_goal_info(request, goal_id):
# Goals
@permissions_required(["add_goal"])
@login_required
-@timeit
+#@timeit
def add_patient_goal(request, patient_id):
resp = {}
goal_name = request.POST.get('name')
@@ -59,7 +59,7 @@ def add_patient_goal(request, patient_id):
# Goals
@permissions_required(["modify_goal"])
@login_required
-@timeit
+#@timeit
def update_goal_status(request, patient_id, goal_id):
resp = {}
patient = User.objects.get(id=patient_id)
@@ -97,7 +97,7 @@ def update_goal_status(request, patient_id, goal_id):
# Goals
@permissions_required(["modify_goal"])
@login_required
-@timeit
+#@timeit
def add_goal_note(request, patient_id, goal_id):
resp = {}
@@ -129,7 +129,7 @@ def add_goal_note(request, patient_id, goal_id):
@permissions_required(["modify_goal"])
@login_required
-@timeit
+#@timeit
def change_name(request, patient_id, goal_id):
resp = {}
patient = User.objects.get(id=patient_id)
diff --git a/apps/inr_app/serializers.py b/apps/inr_app/serializers.py
index c4d28729..e79f8853 100644
--- a/apps/inr_app/serializers.py
+++ b/apps/inr_app/serializers.py
@@ -16,10 +16,15 @@
"""
from datetime import datetime
+from emr.models import (
+ InrTextNote,
+ ObservationComponent,
+ ObservationPinToProblem,
+ ObservationValue,
+ Problem,
+ UserProfile,
+)
from rest_framework import serializers
-
-from emr.models import InrTextNote, Problem, ObservationValue, UserProfile, ObservationComponent, \
- ObservationPinToProblem
from users_app.serializers import SafeUserSerializer
@@ -126,7 +131,7 @@ def get_avatar(self, obj):
return obj.portrait_image.url
def get_full_name(self, obj):
- return unicode(obj)
+ return str(obj)
def get_problem_id(self, obj):
# Find patient's observation (INR data type)
diff --git a/apps/inr_app/urls.py b/apps/inr_app/urls.py
index de0c881c..d8926362 100644
--- a/apps/inr_app/urls.py
+++ b/apps/inr_app/urls.py
@@ -14,22 +14,21 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
+from django.urls import re_path
from inr_app.views import *
urlpatterns = [
- url(r'^(?P\d+)/target/get$', get_inr_target),
- url(r'^(?P\d+)/target/set$', set_inr_target),
- url(r'^(?P\d+)/inrs$', get_inr_table),
- url(r'^(?P\d+)/inr/add$', add_inr),
- url(r'^(?P\d+)/inr/update$', update_inr),
- url(r'^(?P\d+)/inr/delete$', delete_inr),
- url(r'^(?P\d+)/problems$', get_problems),
- url(r'^(?P\d+)/medications$', get_medications),
- url(r'^(?P\d+)/(?P\d+)/orders$', get_orders),
- url(r'^(?P\d+)/order/add$', add_order),
- url(r'^(?P\d+)/notes$', get_inr_note),
- url(r'^(?P\d+)/note/add$', add_note),
- url(r'^patients$', find_patient)
+ re_path(r"^(?P\d+)/target/get$", get_inr_target),
+ re_path(r"^(?P\d+)/target/set$", set_inr_target),
+ re_path(r"^(?P\d+)/inrs$", get_inr_table),
+ re_path(r"^(?P\d+)/inr/add$", add_inr),
+ re_path(r"^(?P\d+)/inr/update$", update_inr),
+ re_path(r"^(?P\d+)/inr/delete$", delete_inr),
+ re_path(r"^(?P\d+)/problems$", get_problems),
+ re_path(r"^(?P\d+)/medications$", get_medications),
+ re_path(r"^(?P\d+)/(?P\d+)/orders$", get_orders),
+ re_path(r"^(?P\d+)/order/add$", add_order),
+ re_path(r"^(?P\d+)/notes$", get_inr_note),
+ re_path(r"^(?P\d+)/note/add$", add_note),
+ re_path(r"^patients$", find_patient),
]
diff --git a/apps/inr_app/views.py b/apps/inr_app/views.py
index 04b511f8..89c5b793 100644
--- a/apps/inr_app/views.py
+++ b/apps/inr_app/views.py
@@ -14,23 +14,35 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
+from common.views import *
from dateutil import parser, relativedelta
from dateutil.relativedelta import relativedelta
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.db.models import Q
-
-from common.views import *
-from emr.models import Inr, InrTextNote, UserProfile, Medication, ObservationComponent, \
- ObservationPinToProblem, ToDo, ObservationValue
+from emr.models import (
+ Inr,
+ InrTextNote,
+ Medication,
+ ObservationComponent,
+ ObservationPinToProblem,
+ ObservationValue,
+ ToDo,
+ UserProfile,
+)
from medication_app.serializers import MedicationSerializer
from todo_app.serializers import TodoSerializer
-from .serializers import InrTextNoteSerializer, InrSerializer, INRPatientSerializer
-from .serializers import ProblemSerializer
+
+from .serializers import (
+ INRPatientSerializer,
+ InrSerializer,
+ InrTextNoteSerializer,
+ ProblemSerializer,
+)
@login_required
-@timeit
+#@timeit
def get_inr_target(request, patient_id):
"""
Get patient INR target goal
@@ -47,7 +59,7 @@ def get_inr_target(request, patient_id):
@login_required
-@timeit
+#@timeit
def set_inr_target(request, patient_id):
"""
Set patient INR widget
@@ -63,7 +75,7 @@ def set_inr_target(request, patient_id):
@login_required
-@timeit
+#@timeit
def get_problems(request, patient_id):
"""
Get all problems, whether this INR widget is pinned to
@@ -89,7 +101,7 @@ def get_problems(request, patient_id):
@login_required
-@timeit
+#@timeit
def get_medications(request, patient_id):
"""
Get all patient's medications in following set: {375383004, 375379004, 375378007, 319735007, 375374009, 319734006, 375380001, 375375005, 319733000, 319736008}
@@ -110,7 +122,7 @@ def get_medications(request, patient_id):
@login_required
-@timeit
+#@timeit
def get_inr_note(request, patient_id):
"""
@@ -135,7 +147,7 @@ def get_inr_note(request, patient_id):
@login_required
-@timeit
+#@timeit
def add_note(request, patient_id):
"""
Adding new note to INR widget
@@ -158,7 +170,7 @@ def add_note(request, patient_id):
@login_required
-@timeit
+#@timeit
def get_orders(request, patient_id, problem_id):
"""
Get all orders(aka todo) which is generated in this widget
@@ -177,7 +189,7 @@ def get_orders(request, patient_id, problem_id):
@login_required
-@timeit
+#@timeit
def add_order(request, patient_id):
"""
@@ -207,7 +219,7 @@ def add_order(request, patient_id):
@login_required
-@timeit
+#@timeit
def get_inr_table(request, patient_id):
"""
Get the INR table(which stand for medication dosage of data point in INR data)
@@ -233,7 +245,7 @@ def get_inr_table(request, patient_id):
@login_required
-@timeit
+#@timeit
def add_inr(request, patient_id):
"""
:param patient_id:
@@ -284,7 +296,7 @@ def add_inr(request, patient_id):
@login_required
-@timeit
+#@timeit
def update_inr(request, patient_id):
"""
:param request:
@@ -328,7 +340,7 @@ def update_inr(request, patient_id):
@login_required
-@timeit
+#@timeit
def delete_inr(request, patient_id):
"""
:param patient_id:
@@ -351,7 +363,7 @@ def delete_inr(request, patient_id):
@login_required
-@timeit
+#@timeit
def find_patient(request):
"""
diff --git a/apps/medication_app/operations.py b/apps/medication_app/operations.py
index 68288447..d2612d37 100644
--- a/apps/medication_app/operations.py
+++ b/apps/medication_app/operations.py
@@ -15,11 +15,18 @@
along with this program. If not, see
"""
from common.views import timeit
-from emr.models import Encounter, EncounterEvent, ProblemActivity, MedicationPinToProblem, PatientController, Problem, \
- EncounterMedication
-
-
-@timeit
+from emr.models import (
+ Encounter,
+ EncounterEvent,
+ EncounterMedication,
+ MedicationPinToProblem,
+ PatientController,
+ Problem,
+ ProblemActivity,
+)
+
+
+#@timeit
def op_medication_event(medication, actor, patient, summary):
"""
Log medication event to encounter & pinned problem \n
@@ -50,7 +57,7 @@ def op_medication_event(medication, actor, patient, summary):
pass
-@timeit
+#@timeit
def count_pinned_have_same_medication_concept_id_and_problem_concept_id(actor, medication, problem):
"""
Finding number of pinned instance having same pair of medication's concept id and problem's concept id
@@ -69,7 +76,7 @@ def count_pinned_have_same_medication_concept_id_and_problem_concept_id(actor, m
pass
-@timeit
+#@timeit
def op_pin_medication_to_problem_for_all_controlled_patient(actor, pinned_instance_set, medication, problem):
"""
Pin medication to any instance of problem for all the patients associated with that physician.
@@ -80,8 +87,8 @@ def op_pin_medication_to_problem_for_all_controlled_patient(actor, pinned_instan
:return:
"""
controlled_patients = PatientController.objects.filter(physician=actor)
- controlled_patient_id_set = [long(x.patient.id) for x in controlled_patients]
- pinned_instance_id_set = [long(x.problem_id) for x in pinned_instance_set]
+ controlled_patient_id_set = [int(x.patient.id) for x in controlled_patients]
+ pinned_instance_id_set = [int(x.problem_id) for x in pinned_instance_set]
# Filtered out all problem already pinned to this medication
problems = Problem.objects.filter(concept_id=problem.concept_id).filter(
@@ -94,7 +101,7 @@ def op_pin_medication_to_problem_for_all_controlled_patient(actor, pinned_instan
pass
-@timeit
+#@timeit
def op_track_medication_during_encounter(patient_id, medication_id):
"""
TODO: This can make to a separated encounter medication app
diff --git a/apps/medication_app/urls.py b/apps/medication_app/urls.py
index 484d8e9f..d9cd0418 100644
--- a/apps/medication_app/urls.py
+++ b/apps/medication_app/urls.py
@@ -14,26 +14,33 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
+from django.urls import re_path
from medication_app.views import *
urlpatterns = [
- url(r'^list_terms$', list_terms),
-
- url(r'^note/(?P\d+)/edit$', edit_note),
- url(r'^note/(?P\d+)/delete$', delete_note),
-
- url(r'^(?P\d+)/pin_to_problem$', pin_to_problem),
- url(r'^(?P\d+)/get_medications$', get_medications),
- url(r'^(?P\d+)/add_medication$', add_medication),
-
- url(r'^(?P\d+)/(?P\d+)/change_active_medication$', change_active_medication),
- url(r'^(?P\d+)/(?P\d+)/change_dosage$', change_dosage),
- url(r'^(?P\d+)/(?P\d+)/access$', on_medication_accessed),
- url(r'^(?P\d+)/(?P\d+)/add_medication_note$', add_medication_note),
- url(r'^(?P\d+)/medication/(?P\d+)/info$', get_medication),
-
- url(r'^(?P\d+)/get_pins$', get_pins),
- url(r'^(?P\d+)/encounters$', get_medication_encounter),
+ re_path(r"^list_terms$", list_terms),
+ re_path(r"^note/(?P\d+)/edit$", edit_note),
+ re_path(r"^note/(?P\d+)/delete$", delete_note),
+ re_path(r"^(?P\d+)/pin_to_problem$", pin_to_problem),
+ re_path(r"^(?P\d+)/get_medications$", get_medications),
+ re_path(r"^(?P\d+)/add_medication$", add_medication),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/change_active_medication$",
+ change_active_medication,
+ ),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/change_dosage$", change_dosage
+ ),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/access$", on_medication_accessed
+ ),
+ re_path(
+ r"^(?P\d+)/(?P\d+)/add_medication_note$",
+ add_medication_note,
+ ),
+ re_path(
+ r"^(?P\d+)/medication/(?P\d+)/info$", get_medication
+ ),
+ re_path(r"^(?P\d+)/get_pins$", get_pins),
+ re_path(r"^(?P\d+)/encounters$", get_medication_encounter),
]
diff --git a/apps/medication_app/views.py b/apps/medication_app/views.py
index 8cadc213..0383e82b 100644
--- a/apps/medication_app/views.py
+++ b/apps/medication_app/views.py
@@ -15,22 +15,26 @@
along with this program. If not, see
"""
import reversion
+from common.views import *
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
-from rest_framework.decorators import api_view
-from reversion.models import Version
-
-from common.views import *
from emr.models import Medication, MedicationTextNote, ToDo, TodoActivity, VWMedications
from emr.mysnomedct import VWMedicationsSerializers
from emr.operations import op_add_todo_event
from medication_app.operations import *
+from rest_framework.decorators import api_view
+from reversion.models import Version
from users_app.views import permissions_accessed
-from .serializers import MedicationTextNoteSerializer, MedicationSerializer, MedicationPinToProblemSerializer
+
+from .serializers import (
+ MedicationPinToProblemSerializer,
+ MedicationSerializer,
+ MedicationTextNoteSerializer,
+)
@login_required
-@timeit
+#@timeit
def list_terms(request):
# We list snomed given a query
query = request.GET['query']
@@ -40,7 +44,7 @@ def list_terms(request):
@login_required
-@timeit
+#@timeit
def on_medication_accessed(request, patient_id, medication_id):
"""
@@ -57,7 +61,7 @@ def on_medication_accessed(request, patient_id, medication_id):
@login_required
-@timeit
+#@timeit
def get_medications(request, patient_id):
"""
Get current patient using medication. Default return active only medication.
@@ -81,7 +85,7 @@ def get_medications(request, patient_id):
@login_required
-@timeit
+#@timeit
def get_medication(request, patient_id, medication_id):
resp = {'success': False}
history_list = []
@@ -109,7 +113,7 @@ def get_medication(request, patient_id, medication_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_medication(request, patient_id):
resp = {'success': False}
@@ -136,7 +140,7 @@ def add_medication(request, patient_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def add_medication_note(request, patient_id, medication_id):
resp = {'success': False}
note = request.POST.get("note", None)
@@ -163,7 +167,7 @@ def add_medication_note(request, patient_id, medication_id):
@login_required
-@timeit
+#@timeit
def edit_note(request, note_id):
resp = {'success': False}
@@ -179,7 +183,7 @@ def edit_note(request, note_id):
@login_required
-@timeit
+#@timeit
def delete_note(request, note_id):
resp = {'success': False}
note = MedicationTextNote.objects.get(id=note_id)
@@ -193,7 +197,7 @@ def delete_note(request, note_id):
@login_required
-@timeit
+#@timeit
def get_pins(request, medication_id):
pins = MedicationPinToProblem.objects.filter(medication_id=medication_id)
resp = {'success': True, 'pins': MedicationPinToProblemSerializer(pins, many=True).data}
@@ -202,7 +206,7 @@ def get_pins(request, medication_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def pin_to_problem(request, patient_id):
resp = {'success': False}
if permissions_accessed(request.user, int(patient_id)):
@@ -229,7 +233,7 @@ def pin_to_problem(request, patient_id):
@login_required
@api_view(["POST"])
-@timeit
+#@timeit
def change_active_medication(request, patient_id, medication_id):
"""
:param request:
@@ -256,7 +260,7 @@ def change_active_medication(request, patient_id, medication_id):
@login_required
-@timeit
+#@timeit
def change_dosage(request, patient_id, medication_id):
"""
Change dosage in medication detail page
@@ -309,7 +313,7 @@ def change_dosage(request, patient_id, medication_id):
@login_required
-@timeit
+#@timeit
def get_medication_encounter(request, medication_id):
"""
Encounter's related event app
diff --git a/apps/my_story_app/urls.py b/apps/my_story_app/urls.py
index 91f269a7..32e9fc1b 100644
--- a/apps/my_story_app/urls.py
+++ b/apps/my_story_app/urls.py
@@ -14,19 +14,27 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
"""
-from django.conf.urls import url
-
+from django.urls import re_path
from my_story_app.views import *
urlpatterns = [
- url(r'^track/click$', track_tab_click),
- url(r'^(?P\d+)/get_my_story$', get_my_story),
- url(r'^(?P\d+)/info$', get_tab_info),
- url(r'^(?P\d+)/add_tab$', add_tab),
- url(r'^(?P\d+)/(?P\d+)/add_text$', add_text),
- url(r'^(?P\d+)/delete_tab/(?P\d+)$', delete_tab),
- url(r'^(?P\d+)/save_tab/(?P\d+)$', save_tab),
- url(r'^(?P\d+)/delete_text_component/(?P\d+)$', delete_text_component),
- url(r'^(?P\d+)/save_text_component/(?P