Skip to content

Commit

Permalink
Merge branch 'v0.18.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
fredkingham committed Oct 11, 2020
2 parents df0fa5d + 578648e commit 239a52d
Show file tree
Hide file tree
Showing 55 changed files with 905 additions and 456 deletions.
21 changes: 21 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
### 0.18.4 (Minor Release)

#### Some models have translations
Episodes/Patients/Demographics now use use gettext_lazy on all their fields

#### PatientListCtrl.refresh and PatientDetailCtrl.refresh return promises
PatientListCtrl.refresh and PatientDetailCtrl.refresh now return a promise which resolves after the refresh is complete.

#### Removes scroll to top
Removes the directory `scrolllto-top` as this is not commonly used. `go-to-top` is directive that is a a drop in replacement that will take the user up to the top of the page but without scrolling.

#### Remove shortDate and shortDateTime
The angular filters shortDate and shortDateTime have been deprecated for some time.

#### Stop an index being passed to recordEditor.editItem
recordEditor.editItem used to take either a number or an item (subrecord) as its second argument.
Now it will only take an item.

#### Removes the account page
Removes the user account detail page as this is not tested/used and can be easily created within an app.

### 0.18.3 (Minor Release)

#### Complex objects are now serialized in the extract as json
Expand Down
11 changes: 0 additions & 11 deletions doc/docs/guides/components_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,6 @@ For example:
* [JSON based REST APIs](json_api.md) for all of your models
* ... and [many more](topic-guides.md)...

### Plugins

Opal plugins are intended to provide high quality generic, composable, re-usable chunks of
functionality that can be "dropped in" to an application. For example, installing the
[Dashboards](https://github.com/openhealthcare/opal-dashboards) plugin allows you to easily
create clinical dashboards within your application. The
[Referral](https://github.com/openhealthcare/opal-referral) plugin provides the plumbing for
building complex inter-team referrals within an institution.

Plugins have a [rich plugin API](plugins.md) they can hook into to, and
many examples can be found by inspecting the source of [existing plugins](plugins_list.md).

### Applications

Expand Down
48 changes: 0 additions & 48 deletions doc/docs/guides/plugins_list.md

This file was deleted.

1 change: 0 additions & 1 deletion doc/docs/guides/topic-guides.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ A list of all available topic guides.
|[Command line tool](command_line_tool.md) | Running admin tasks from the command line|
|[Discoverable](discoverable.md)| Design patterns and library for creating easily reusable features |
|[Plugins](plugins.md)| Available interfaces for Opal plugins|
|[List of Plugins](plugins_list.md)| A list of available high quality plugins|


### Data and Business Logic
Expand Down
2 changes: 1 addition & 1 deletion doc/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This is the **developer documentation**.
<img src="/img/clinical.advice.png" width="600px;" style="margin: 12px auto; border: 1px solid black;"/>

Opal is an entirely open [source](https://github.com/openhealthcare/opal),
open [governance](https://github.com/openhealthcare/opal/issues) product, as are the wide library of plugins.
open [governance](https://github.com/openhealthcare/opal/issues) product.

### First Steps

Expand Down
8 changes: 0 additions & 8 deletions doc/docs/reference/javascript/javascript_helpers.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,6 @@ If the form is valid, it will allow the ng-click function to be called.
This means that if you only want to show error messages after the user has clicked the save button you can do so with the
form.$submitted variable.

#### scroll-top

Adds a click handler to the element that when click will animate the body of the element to scroll to the top

#### go-to-top

Similar to scroll-top, this moves the scroll bar to the top of the page but doesn't animate the transition.

#### copy to clipboard

##### e.g.
Expand Down
3 changes: 1 addition & 2 deletions doc/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ pages:
- Command Line tool: guides/command_line_tool.md
- Discoverable Features: guides/discoverable.md
- Plugins: guides/plugins.md
- Plugin List: guides/plugins_list.md

# Data and business logic
- Data Model: guides/datamodel.md
Expand Down Expand Up @@ -122,7 +121,7 @@ dev_addr: 0.0.0.0:8965
include_next_prev: false

extra:
version: v0.18.3
version: v0.18.4

markdown_extensions:
- fenced_code
2 changes: 1 addition & 1 deletion opal/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""
Declare our current version string
"""
__version__ = '0.18.3'
__version__ = '0.18.4'
5 changes: 2 additions & 3 deletions opal/core/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import inspect
import itertools
import os

from django.utils.translation import ugettext_lazy as _
from django.urls import reverse
from opal.core import plugins, menus

Expand Down Expand Up @@ -76,7 +76,6 @@ class OpalApplication(object):
"js/opal/controllers/edit_item.js",
"js/opal/controllers/edit_teams.js",
"js/opal/controllers/delete_item_confirmation.js",
"js/opal/controllers/account.js",
"js/opal/controllers/keyboard_shortcuts.js",
"js/opal/controllers/patient_access_log.js",
"js/opal/controllers/lookup_list_reference.js"
Expand Down Expand Up @@ -120,7 +119,7 @@ def get_menu_items(klass, user=None):
href=reverse(logout_view), icon="fa-sign-out", index=1000
)
admin = menus.MenuItem(
href="/admin/", icon="fa-cogs", display="Admin",
href="/admin/", icon="fa-cogs", display=_("Admin"),
index=999
)
items = []
Expand Down
19 changes: 14 additions & 5 deletions opal/core/lookuplists.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from django.contrib.contenttypes.fields import GenericRelation
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext_lazy as _
from django.db import models

from opal import utils
Expand Down Expand Up @@ -111,13 +112,21 @@ def synonym_exists(lookuplist, name):
class LookupList(models.Model):
# For the purposes of FHIR CodeableConcept, .name is .display
# We keep it as .name for Opal backwards compatibility
name = models.CharField(max_length=255, unique=True)
synonyms = GenericRelation('opal.Synonym')
system = models.CharField(max_length=255, blank=True, null=True)
code = models.CharField(max_length=255, blank=True, null=True)
name = models.CharField(
max_length=255, unique=True, verbose_name=_("Name")
)
synonyms = GenericRelation('opal.Synonym', verbose_name=_("Synonym"))
system = models.CharField(
max_length=255, blank=True, null=True, verbose_name=_("System")
)
code = models.CharField(
max_length=255, blank=True, null=True, verbose_name=_("Code")
)
# We don't particularly use .version in the current implementation, but we
# include here for the sake of FHIR CodeableConcept compatibility
version = models.CharField(max_length=255, blank=True, null=True)
version = models.CharField(
max_length=255, blank=True, null=True, verbose_name=_("Version")
)

class Meta:
ordering = ['name']
Expand Down
2 changes: 1 addition & 1 deletion opal/core/pathway/static/js/pathway/services/pathway.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
angular.module('opal.services').service('Pathway', function(
$http, FieldTranslator, $q, $controller, $window, $rootScope
$http, FieldTranslator, $q, $window, $rootScope
){
"use strict";
var Pathway = function(pathwayDefinition, episode){
Expand Down
7 changes: 4 additions & 3 deletions opal/core/search/templates/search.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{% load i18n %}
<div class="container content-offset search-container">

<div class="panel panel-primary search-panel panel-container">
<!-- Default panel contents -->
<div class="panel-heading">
<h2>
<i class="fa fa-search"></i>
Patient Search
{% trans "Patient Search" %}
</h2>
</div>
<div class="panel-body">
Expand All @@ -26,15 +27,15 @@ <h2>
<div class="col-sm-4 col-sm-push-4 text-right">
<a href="/search/#/extract" class="btn btn-secondary pull-right">
<i class="fa fa-sliders"></i>
Advanced
{% trans "Advanced" %}
</a>
</div>
</div>
<div class="row">
<div class="col-sm-4 col-sm-push-4 text-center">
<a ng-click="search()" class="btn btn-lg btn-primary content-offset-25">
<i class="glyphicon glyphicon-search"></i>
Search
{% trans "Search" %}
</a>
</div>
</div>
Expand Down
139 changes: 139 additions & 0 deletions opal/migrations/0039_auto_20201007_1245.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# Generated by Django 2.0.13 on 2020-10-07 12:45

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import opal.models


class Migration(migrations.Migration):

dependencies = [
('opal', '0038_auto_20191206_1449'),
]

operations = [
migrations.AlterModelOptions(
name='episode',
options={'verbose_name': 'Episode', 'verbose_name_plural': 'Episodes'},
),
migrations.AlterModelOptions(
name='patient',
options={'verbose_name': 'Patient', 'verbose_name_plural': 'Patients'},
),
migrations.AlterField(
model_name='episode',
name='active',
field=models.BooleanField(default=False, verbose_name='Active'),
),
migrations.AlterField(
model_name='episode',
name='category_name',
field=models.CharField(default=opal.models.get_default_episode_type, max_length=200, verbose_name='Category Name'),
),
migrations.AlterField(
model_name='episode',
name='consistency_token',
field=models.CharField(max_length=8, verbose_name='Consistency Token'),
),
migrations.AlterField(
model_name='episode',
name='created',
field=models.DateTimeField(blank=True, null=True, verbose_name='Created'),
),
migrations.AlterField(
model_name='episode',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_opal_episode_subrecords', to=settings.AUTH_USER_MODEL, verbose_name='Created By'),
),
migrations.AlterField(
model_name='episode',
name='end',
field=models.DateField(blank=True, null=True, verbose_name='End'),
),
migrations.AlterField(
model_name='episode',
name='patient',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='opal.Patient', verbose_name='Patient'),
),
migrations.AlterField(
model_name='episode',
name='stage',
field=models.CharField(blank=True, max_length=256, null=True, verbose_name='Stage'),
),
migrations.AlterField(
model_name='episode',
name='start',
field=models.DateField(blank=True, null=True, verbose_name='Start'),
),
migrations.AlterField(
model_name='episode',
name='updated',
field=models.DateTimeField(blank=True, null=True, verbose_name='Updated'),
),
migrations.AlterField(
model_name='episode',
name='updated_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='updated_opal_episode_subrecords', to=settings.AUTH_USER_MODEL, verbose_name='Updated By'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='consistency_token',
field=models.CharField(max_length=8, verbose_name='Consistency Token'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='created',
field=models.DateTimeField(blank=True, null=True, verbose_name='Created'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_opal_inpatientadmission_subrecords', to=settings.AUTH_USER_MODEL, verbose_name='Created By'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='external_identifier',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Extenal Identifier'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='external_system',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='External System'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='patient',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='opal.Patient', verbose_name='Patient'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='updated',
field=models.DateTimeField(blank=True, null=True, verbose_name='Updated'),
),
migrations.AlterField(
model_name='inpatientadmission',
name='updated_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='updated_opal_inpatientadmission_subrecords', to=settings.AUTH_USER_MODEL, verbose_name='Updated By'),
),
migrations.AlterField(
model_name='tagging',
name='created',
field=models.DateTimeField(blank=True, null=True, verbose_name='Created'),
),
migrations.AlterField(
model_name='tagging',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_opal_tagging_subrecords', to=settings.AUTH_USER_MODEL, verbose_name='Created By'),
),
migrations.AlterField(
model_name='tagging',
name='updated',
field=models.DateTimeField(blank=True, null=True, verbose_name='Updated'),
),
migrations.AlterField(
model_name='tagging',
name='updated_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='updated_opal_tagging_subrecords', to=settings.AUTH_USER_MODEL, verbose_name='Updated By'),
),
]
Loading

0 comments on commit 239a52d

Please sign in to comment.