@@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-02-01 02:18
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0003_historydata'),
]

operations = [
migrations.CreateModel(
name='InsuranceData',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('type', models.CharField(blank=True, max_length=9, null=True)),
('provider', models.CharField(blank=True, max_length=255, null=True)),
('plan_name', models.CharField(blank=True, max_length=255, null=True)),
('policy_number', models.CharField(blank=True, max_length=255, null=True)),
('group_number', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_lname', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_mname', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_fname', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_relationship', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_ss', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_dob', models.DateField(blank=True, db_column='subscriber_DOB', null=True)),
('subscriber_street', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_postal_code', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_city', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_state', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_country', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_phone', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_employer', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_employer_street', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_employer_postal_code', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_employer_state', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_employer_country', models.CharField(blank=True, max_length=255, null=True)),
('subscriber_employer_city', models.CharField(blank=True, max_length=255, null=True)),
('copay', models.CharField(blank=True, max_length=255, null=True)),
('date', models.DateField()),
('pid', models.BigIntegerField()),
('subscriber_sex', models.CharField(blank=True, max_length=25, null=True)),
('accept_assignment', models.CharField(max_length=5)),
('policy_type', models.CharField(max_length=25)),
],
options={
'db_table': 'insurance_data',
'managed': False,
},
),
]
@@ -0,0 +1,128 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-02-09 18:26
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0004_insurancedata'),
]

operations = [
migrations.CreateModel(
name='FormEncounter',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('date', models.DateTimeField(blank=True, null=True)),
('reason', models.TextField(blank=True, null=True)),
('facility', models.TextField(blank=True, null=True)),
('facility_id', models.IntegerField()),
('pid', models.BigIntegerField(blank=True, null=True)),
('encounter', models.BigIntegerField(blank=True, null=True)),
('onset_date', models.DateTimeField(blank=True, null=True)),
('sensitivity', models.CharField(blank=True, max_length=30, null=True)),
('billing_note', models.TextField(blank=True, null=True)),
('pc_catid', models.IntegerField()),
('last_level_billed', models.IntegerField()),
('last_level_closed', models.IntegerField()),
('last_stmt_date', models.DateField(blank=True, null=True)),
('stmt_count', models.IntegerField()),
('provider_id', models.IntegerField(blank=True, null=True)),
('supervisor_id', models.IntegerField(blank=True, null=True)),
('invoice_refno', models.CharField(max_length=31)),
('referral_source', models.CharField(max_length=31)),
('billing_facility', models.IntegerField()),
],
options={
'db_table': 'form_encounter',
'managed': False,
},
),
migrations.CreateModel(
name='Forms',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('date', models.DateTimeField(blank=True, null=True)),
('encounter', models.BigIntegerField(blank=True, null=True)),
('form_name', models.TextField(blank=True, null=True)),
('form_id', models.BigIntegerField(blank=True, null=True)),
('pid', models.BigIntegerField(blank=True, null=True)),
('user', models.CharField(blank=True, max_length=255, null=True)),
('groupname', models.CharField(blank=True, max_length=255, null=True)),
('authorized', models.IntegerField(blank=True, null=True)),
('deleted', models.IntegerField()),
('formdir', models.TextField(blank=True, null=True)),
],
options={
'db_table': 'forms',
'managed': False,
},
),
migrations.CreateModel(
name='IssueEncounter',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('pid', models.IntegerField()),
('list_id', models.IntegerField()),
('encounter', models.IntegerField()),
('resolved', models.IntegerField()),
],
options={
'db_table': 'issue_encounter',
'managed': False,
},
),
migrations.CreateModel(
name='Lists',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('date', models.DateTimeField(blank=True, null=True)),
('type', models.CharField(blank=True, max_length=255, null=True)),
('title', models.CharField(blank=True, max_length=255, null=True)),
('begdate', models.DateField(blank=True, null=True)),
('enddate', models.DateField(blank=True, null=True)),
('returndate', models.DateField(blank=True, null=True)),
('occurrence', models.IntegerField(blank=True, null=True)),
('classification', models.IntegerField(blank=True, null=True)),
('referredby', models.CharField(blank=True, max_length=255, null=True)),
('extrainfo', models.CharField(blank=True, max_length=255, null=True)),
('diagnosis', models.CharField(blank=True, max_length=255, null=True)),
('activity', models.IntegerField(blank=True, null=True)),
('comments', models.TextField(blank=True, null=True)),
('pid', models.BigIntegerField(blank=True, null=True)),
('user', models.CharField(blank=True, max_length=255, null=True)),
('groupname', models.CharField(blank=True, max_length=255, null=True)),
('outcome', models.IntegerField()),
('destination', models.CharField(blank=True, max_length=255, null=True)),
('reinjury_id', models.BigIntegerField()),
('injury_part', models.CharField(max_length=31)),
('injury_type', models.CharField(max_length=31)),
('injury_grade', models.CharField(max_length=31)),
('reaction', models.CharField(max_length=255)),
('external_allergyid', models.IntegerField(blank=True, null=True)),
('erx_source', models.CharField(max_length=1)),
('erx_uploaded', models.CharField(max_length=1)),
('modifydate', models.DateTimeField()),
],
options={
'db_table': 'lists',
'managed': False,
},
),
migrations.CreateModel(
name='ListsTouch',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('pid', models.BigIntegerField()),
('type', models.CharField(max_length=255)),
('date', models.DateTimeField(blank=True, null=True)),
],
options={
'db_table': 'lists_touch',
'managed': False,
},
),
]
@@ -0,0 +1,98 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-02-18 23:42
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0005_formencounter_forms_issueencounter_lists_liststouch'),
]

operations = [
migrations.CreateModel(
name='Facility',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('name', models.CharField(blank=True, max_length=255, null=True)),
('phone', models.CharField(blank=True, max_length=30, null=True)),
('fax', models.CharField(blank=True, max_length=30, null=True)),
('email', models.CharField(blank=True, max_length=255, null=True)),
('street', models.CharField(blank=True, max_length=255, null=True)),
('city', models.CharField(blank=True, max_length=255, null=True)),
('state', models.CharField(blank=True, max_length=50, null=True)),
('country_code', models.CharField(blank=True, max_length=10, null=True)),
('facility_npi', models.CharField(blank=True, max_length=15, null=True)),
('service_location', models.IntegerField()),
('billing_location', models.IntegerField()),
('color', models.CharField(max_length=7)),
],
options={
'db_table': 'facility',
'managed': False,
},
),
migrations.CreateModel(
name='FormReviewofs',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('date', models.DateTimeField(blank=True, null=True)),
('pid', models.BigIntegerField(blank=True, null=True)),
('user', models.CharField(blank=True, max_length=255, null=True)),
('groupname', models.CharField(blank=True, max_length=255, null=True)),
('authorized', models.IntegerField(blank=True, null=True)),
('dry_mouth', models.CharField(blank=True, max_length=5, null=True)),
('heart_attack', models.CharField(blank=True, max_length=5, null=True)),
('high_blood_pressure', models.CharField(blank=True, max_length=5, null=True)),
('insulin_dependent_diabetes', models.CharField(blank=True, max_length=5, null=True)),
('noninsulin_dependent_diabetes', models.CharField(blank=True, max_length=5, null=True)),
],
options={
'db_table': 'form_reviewofs',
'managed': False,
},
),
migrations.CreateModel(
name='FormRos',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('pid', models.IntegerField()),
('date', models.DateTimeField(blank=True, null=True)),
('heart_problem', models.CharField(blank=True, max_length=3, null=True)),
('p', models.CharField(blank=True, max_length=3, null=True)),
('n_numbness', models.CharField(blank=True, max_length=3, null=True)),
('n_weakness', models.CharField(blank=True, max_length=3, null=True)),
('diabetes', models.CharField(blank=True, max_length=3, null=True)),
],
options={
'db_table': 'form_ros',
'managed': False,
},
),
migrations.CreateModel(
name='FormVitals',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('date', models.DateTimeField(blank=True, null=True)),
('pid', models.BigIntegerField(blank=True, null=True)),
('user', models.CharField(blank=True, max_length=255, null=True)),
('groupname', models.CharField(blank=True, max_length=255, null=True)),
('authorized', models.IntegerField(blank=True, null=True)),
('pulse', models.FloatField(blank=True, null=True)),
('bps', models.CharField(blank=True, max_length=40, null=True)),
('bpd', models.CharField(blank=True, max_length=40, null=True)),
('weight', models.FloatField(blank=True, null=True)),
('height', models.FloatField(blank=True, null=True)),
('bmi', models.FloatField(blank=True, db_column='BMI', null=True)),
('waist_circ', models.FloatField(blank=True, null=True)),
('activity', models.IntegerField(blank=True, null=True)),
('temperature', models.FloatField(blank=True, null=True)),
],
options={
'db_table': 'form_vitals',
'managed': False,
},
),
]
@@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 01:51
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0006_facility_formreviewofs_formros_formvitals'),
]

operations = [
migrations.CreateModel(
name='MedicalHistory',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('lat', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
('long', models.FloatField(blank=True, null=True, verbose_name='Longitude')),
('history_data_ref', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='api.HistoryData')),
],
options={
'managed': True,
},
),
]
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 02:15
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0007_medicalhistory'),
]

operations = [
migrations.RemoveField(
model_name='medicalhistory',
name='history_data_ref',
),
migrations.DeleteModel(
name='MedicalHistory',
),
]
@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 02:16
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0008_auto_20160315_0215'),
]

operations = [
migrations.CreateModel(
name='HistoryData_test',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('pid', models.BigIntegerField()),
('tobacco', models.TextField(blank=True, null=True)),
],
),
migrations.CreateModel(
name='MedicalHistory',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('lat', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
('long', models.FloatField(blank=True, null=True, verbose_name='Longitude')),
('history_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.HistoryData_test')),
],
options={
'managed': True,
},
),
]
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 02:17
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0009_historydata_test_medicalhistory'),
]

operations = [
migrations.RemoveField(
model_name='medicalhistory',
name='history_data',
),
migrations.DeleteModel(
name='HistoryData_test',
),
migrations.DeleteModel(
name='MedicalHistory',
),
]
@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 02:18
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0010_auto_20160315_0217'),
]

operations = [
migrations.CreateModel(
name='HistoryData_test',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('pid', models.BigIntegerField()),
('tobacco', models.TextField(blank=True, null=True)),
],
),
migrations.CreateModel(
name='MedicalHistory',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('lat', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
('long', models.FloatField(blank=True, null=True, verbose_name='Longitude')),
('history_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.HistoryData_test')),
],
options={
'managed': True,
},
),
]
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:32
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0011_historydata_test_medicalhistory'),
]

operations = [
migrations.RemoveField(
model_name='medicalhistory',
name='history_data',
),
migrations.DeleteModel(
name='HistoryData_test',
),
migrations.DeleteModel(
name='MedicalHistory',
),
]
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:38
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0012_auto_20160315_2232'),
]

operations = [
migrations.CreateModel(
name='MedicalHistory',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('lat', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
('long', models.FloatField(blank=True, null=True, verbose_name='Longitude')),
],
options={
'managed': True,
},
),
]
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:40
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0013_medicalhistory'),
]

operations = [
migrations.AlterModelOptions(
name='patientdata',
options={'managed': True},
),
]
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:47
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0014_auto_20160315_2240'),
]

operations = [
migrations.AlterModelOptions(
name='patientdata',
options={'managed': False},
),
]
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:47
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0015_auto_20160315_2247'),
]

operations = [
migrations.AlterModelOptions(
name='patientdata',
options={'managed': True},
),
]
@@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:54
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0016_auto_20160315_2247'),
]

operations = [
migrations.CreateModel(
name='Test',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('med_his', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='foreign', to='api.MedicalHistory')),
('med_his2', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='onetoone', to='api.MedicalHistory')),
],
options={
'managed': True,
},
),
migrations.AlterModelOptions(
name='patientdata',
options={'managed': False},
),
]
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:55
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0017_auto_20160315_2254'),
]

operations = [
migrations.RemoveField(
model_name='test',
name='med_his',
),
migrations.RemoveField(
model_name='test',
name='med_his2',
),
migrations.DeleteModel(
name='Test',
),
]
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-15 22:55
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0018_auto_20160315_2255'),
]

operations = [
migrations.CreateModel(
name='Test',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('med_his', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='foreign', to='api.MedicalHistory')),
('med_his2', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='onetoone', to='api.MedicalHistory')),
],
options={
'managed': True,
},
),
]
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-03-16 00:01
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('api', '0019_test'),
]

operations = [
migrations.RemoveField(
model_name='test',
name='med_his2',
),
]
Empty file.
@@ -0,0 +1,339 @@
from __future__ import unicode_literals
from django.db import models
from django.utils import timezone

# Create your models here.

# TODO (Ryan 3/14) - Add in the additional fields for blood sugar into OpenEMR via admin GUI
# http://htmlpreview.github.io/?https://github.com/fndtn357/openemr/blob/master/assets/openemrER.html

"""
Store a list of all medical objects associated with a patient data object
"""


class MedicalHistory(models.Model):
id = models.AutoField(primary_key=True)
lat = models.FloatField(verbose_name='Latitude', blank=True, null=True)
long = models.FloatField(verbose_name='Longitude', blank=True, null=True)

class Meta:
managed = True


"""
This class will be used primarily for search functionality, as well as holding information that will typically not
change for each patient once they are created.
"""


class Test(models.Model):
id = models.AutoField(primary_key=True)
med_his = models.ForeignKey('MedicalHistory', related_name='foreign')

class Meta:
managed = True


class PatientData(models.Model):
pid = models.BigIntegerField(unique=True, primary_key=True)
pubpid = models.CharField(max_length=255)
ss = models.CharField(max_length=255)
date = models.DateTimeField(blank=True, null=True)
fname = models.CharField(max_length=255)
lname = models.CharField(max_length=255)
mname = models.CharField(max_length=255, null=True)
dob = models.DateField(db_column='DOB', blank=True, null=True) # Field name made lowercase.
sex = models.CharField(max_length=255)
status = models.CharField(max_length=255, null=True)
email = models.CharField(max_length=255)
street = models.CharField(max_length=255, null=True)
postal_code = models.CharField(max_length=255)
city = models.CharField(max_length=255, null=True)
state = models.CharField(max_length=255, null=True)
country_code = models.CharField(max_length=255, null=True)
phone_contact = models.CharField(max_length=255, null=True)
phone_cell = models.CharField(max_length=255, null=True)
med_his = models.OneToOneField('MedicalHistory', default=1, related_name='patient_data')

def __unicode__(self):
return str(self.pid) + ', ' + self.lname

class Meta:
managed = False
db_table = 'patient_data'

"""
This is the original PatientData class. We might need to use it in the even that we need python to migrate our new
columns and indexes over
class PatientData(models.Model):
id = models.BigIntegerField()
title = models.CharField(max_length=255)
language = models.CharField(max_length=255)
financial = models.CharField(max_length=255)
fname = models.CharField(max_length=255)
lname = models.CharField(max_length=255)
mname = models.CharField(max_length=255)
dob = models.DateField(db_column='DOB', blank=True, null=True) # Field name made lowercase.
street = models.CharField(max_length=255)
postal_code = models.CharField(max_length=255)
city = models.CharField(max_length=255)
state = models.CharField(max_length=255)
country_code = models.CharField(max_length=255)
drivers_license = models.CharField(max_length=255)
ss = models.CharField(max_length=255)
occupation = models.TextField(blank=True, null=True)
phone_home = models.CharField(max_length=255)
phone_biz = models.CharField(max_length=255)
phone_contact = models.CharField(max_length=255)
phone_cell = models.CharField(max_length=255)
pharmacy_id = models.IntegerField()
status = models.CharField(max_length=255)
contact_relationship = models.CharField(max_length=255)
date = models.DateTimeField(blank=True, null=True)
sex = models.CharField(max_length=255)
referrer = models.CharField(max_length=255)
referrerid = models.CharField(db_column='referrerID', max_length=255) # Field name made lowercase.
providerid = models.IntegerField(db_column='providerID', blank=True, null=True) # Field name made lowercase.
ref_providerid = models.IntegerField(db_column='ref_providerID', blank=True, null=True) # Field name made lowercase.
email = models.CharField(max_length=255)
email_direct = models.CharField(max_length=255)
ethnoracial = models.CharField(max_length=255)
race = models.CharField(max_length=255)
ethnicity = models.CharField(max_length=255)
interpretter = models.CharField(max_length=255)
migrantseasonal = models.CharField(max_length=255)
family_size = models.CharField(max_length=255)
monthly_income = models.CharField(max_length=255)
homeless = models.CharField(max_length=255)
financial_review = models.DateTimeField(blank=True, null=True)
pubpid = models.CharField(max_length=255)
pid = models.BigIntegerField(unique=True)
genericname1 = models.CharField(max_length=255)
genericval1 = models.CharField(max_length=255)
genericname2 = models.CharField(max_length=255)
genericval2 = models.CharField(max_length=255)
hipaa_mail = models.CharField(max_length=3)
hipaa_voice = models.CharField(max_length=3)
hipaa_notice = models.CharField(max_length=3)
hipaa_message = models.CharField(max_length=20)
hipaa_allowsms = models.CharField(max_length=3)
hipaa_allowemail = models.CharField(max_length=3)
squad = models.CharField(max_length=32)
fitness = models.IntegerField()
referral_source = models.CharField(max_length=30)
usertext1 = models.CharField(max_length=255)
usertext2 = models.CharField(max_length=255)
usertext3 = models.CharField(max_length=255)
usertext4 = models.CharField(max_length=255)
usertext5 = models.CharField(max_length=255)
usertext6 = models.CharField(max_length=255)
usertext7 = models.CharField(max_length=255)
usertext8 = models.CharField(max_length=255)
userlist1 = models.CharField(max_length=255)
userlist2 = models.CharField(max_length=255)
userlist3 = models.CharField(max_length=255)
userlist4 = models.CharField(max_length=255)
userlist5 = models.CharField(max_length=255)
userlist6 = models.CharField(max_length=255)
userlist7 = models.CharField(max_length=255)
pricelevel = models.CharField(max_length=255)
regdate = models.DateField(blank=True, null=True)
contrastart = models.DateField(blank=True, null=True)
completed_ad = models.CharField(max_length=3)
ad_reviewed = models.DateField(blank=True, null=True)
vfc = models.CharField(max_length=255)
mothersname = models.CharField(max_length=255)
guardiansname = models.CharField(max_length=255)
allow_imm_reg_use = models.CharField(max_length=255)
allow_imm_info_share = models.CharField(max_length=255)
allow_health_info_ex = models.CharField(max_length=255)
allow_patient_portal = models.CharField(max_length=31)
deceased_date = models.DateTimeField(blank=True, null=True)
deceased_reason = models.CharField(max_length=255)
soap_import_status = models.IntegerField(blank=True, null=True)
cmsportal_login = models.CharField(max_length=60)
class Meta:
managed = False
db_table = 'patient_data'
"""

"""
These classes are used to store data from a patients visit, including vitals, location, and family history
"""


class HistoryData(models.Model):
id = models.AutoField(primary_key=True)
date = models.DateTimeField(blank=True, null=True)
pid = models.BigIntegerField(null=False)
tobacco = models.TextField(blank=True, null=True)
relatives_diabetes = models.TextField(blank=True, null=True)
relatives_high_blood_pressure = models.TextField(blank=True, null=True)
med_his = models.ForeignKey(MedicalHistory, default=3, related_name='history_data')

def __unicode__(self):
return '%d: %s' % (self.pid, self.date)

class Meta:
managed = False
db_table = 'history_data'
ordering = ['date']

class FormEncounter(models.Model):
id = models.BigIntegerField(primary_key=True)
pid = models.BigIntegerField(blank=True, null=True)
date = models.DateTimeField(blank=True, null=True)
facility = models.TextField(blank=True, null=True)
facility_id = models.IntegerField()
encounter = models.BigIntegerField(blank=True, null=True)
provider_id = models.IntegerField(blank=True, null=True)

def __unicode__(self):
return str(self.pid) + ', ' + str(self.encounter)

class Meta:
managed = False
db_table = 'form_encounter'

class IssueEncounter(models.Model):
# (ming) set primary_key to pid instead of the default autoincremented id
pid = models.IntegerField(primary_key=True)
list_id = models.IntegerField()
encounter = models.IntegerField()
resolved = models.IntegerField()

def __unicode__(self):
return str(self.pid) + ', ' + str(self.encounter) + ', ' + str(self.list_id)

class Meta:
managed = False
db_table = 'issue_encounter'
unique_together = (('pid', 'list_id', 'encounter'),)

class Forms(models.Model):
id = models.BigIntegerField(primary_key=True)
date = models.DateTimeField(blank=True, null=True)
encounter = models.BigIntegerField(blank=True, null=True)
form_name = models.TextField(blank=True, null=True)
form_id = models.BigIntegerField(blank=True, null=True)
pid = models.BigIntegerField(blank=True, null=True)
user = models.CharField(max_length=255, blank=True, null=True)
deleted = models.IntegerField()

def __unicode__(self):
return str(self.pid) + ', ' + str(self.encounter) + ', ' + self.form_name

class Meta:
managed = False
db_table = 'forms'

class Lists(models.Model):
id = models.BigIntegerField(primary_key=True)
pid = models.BigIntegerField(blank=True, null=True)
user = models.CharField(max_length=255, blank=True, null=True)
date = models.DateTimeField(blank=True, null=True)
type = models.CharField(max_length=255, blank=True, null=True)
title = models.CharField(max_length=255, blank=True, null=True)
begdate = models.DateField(blank=True, null=True)
enddate = models.DateField(blank=True, null=True)

def __unicode__(self):
return str(self.pid) + ', ' + self.user + ', ' + self.type

class Meta:
managed = False
db_table = 'lists'

class ListsTouch(models.Model):
# (ming) set primary_key to pid instead of the default autoincremented id
pid = models.BigIntegerField(primary_key=True)
type = models.CharField(max_length=255)
date = models.DateTimeField(blank=True, null=True)

def __unicode__(self):
return str(self.pid) + ', ' + self.type

class Meta:
managed = False
db_table = 'lists_touch'
unique_together = (('pid', 'type'),)

class Facility(models.Model):
id = models.BigIntegerField(primary_key=True)
name = models.CharField(max_length=255, blank=True, null=True)
phone = models.CharField(max_length=30, blank=True, null=True)
fax = models.CharField(max_length=30, blank=True, null=True)
email = models.CharField(max_length=255, blank=True, null=True)
street = models.CharField(max_length=255, blank=True, null=True)
city = models.CharField(max_length=255, blank=True, null=True)
state = models.CharField(max_length=50, blank=True, null=True)
country_code = models.CharField(max_length=10, blank=True, null=True)
facility_npi = models.CharField(max_length=15, blank=True, null=True)
service_location = models.IntegerField()
billing_location = models.IntegerField()
color = models.CharField(max_length=7)

def __unicode__(self):
return str(self.id) + ', ' + self.name

class Meta:
managed = False
db_table = 'facility'

class FormVitals(models.Model):
id = models.BigIntegerField(primary_key=True)
date = models.DateTimeField(blank=True, null=True)
pid = models.BigIntegerField(blank=True, null=True)
user = models.CharField(max_length=255, blank=True, null=True)
groupname = models.CharField(max_length=255, blank=True, null=True)
pulse = models.FloatField(blank=True, null=True)
bps = models.CharField(max_length=40, blank=True, null=True)
bpd = models.CharField(max_length=40, blank=True, null=True)
weight = models.FloatField(blank=True, null=True)
height = models.FloatField(blank=True, null=True)
bmi = models.FloatField(db_column='BMI', blank=True, null=True) # Field name made lowercase.
waist_circ = models.FloatField(blank=True, null=True)
activity = models.IntegerField(blank=True, null=True)
temperature = models.FloatField(blank=True, null=True)

def __unicode__(self):
return str(self.pid)

class Meta:
managed = False
db_table = 'form_vitals'

class FormReviewofs(models.Model):
id = models.BigIntegerField(primary_key=True)
date = models.DateTimeField(blank=True, null=True)
pid = models.BigIntegerField(blank=True, null=True)
dry_mouth = models.CharField(max_length=5, blank=True, null=True)
high_blood_pressure = models.CharField(max_length=5, blank=True, null=True)
user = models.CharField(max_length=255, blank=True, null=True)
groupname = models.CharField(max_length=255, blank=True, null=True)

def __unicode__(self):
return str(self.pid) + ', ' + str(self.date)

class Meta:
managed = False
db_table = 'form_reviewofs'


class FormRos(models.Model):
pid = models.IntegerField()
date = models.DateTimeField(blank=True, null=True)
p = models.CharField(max_length=3, blank=True, null=True)
n_numbness = models.CharField(max_length=3, blank=True, null=True)
n_weakness = models.CharField(max_length=3, blank=True, null=True)
diabetes = models.CharField(max_length=3, blank=True, null=True)

def __unicode__(self):
return str(self.pid) + ', ' + str(self.date)

class Meta:
managed = False
db_table = 'form_ros'
@@ -0,0 +1,73 @@
from django.contrib.auth.models import User, Group
from rest_framework import serializers
from api.models import PatientData, HistoryData, MedicalHistory


class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')


class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')


class HistoryDataSerializer(serializers.ModelSerializer):
class Meta:
model = HistoryData


class PatientDataSerializer(serializers.ModelSerializer):
pid = serializers.IntegerField()
pubpid = serializers.CharField()
ss = serializers.CharField()
date = serializers.DateTimeField()
fname = serializers.CharField()
lname = serializers.CharField()
mname = serializers.CharField()
dob = serializers.DateField()
sex = serializers.CharField()
status = serializers.CharField()
email = serializers.CharField()
street = serializers.CharField()
postal_code = serializers.CharField()
city = serializers.CharField()
state = serializers.CharField()
country_code = serializers.CharField()
phone_contact = serializers.CharField()
phone_cell = serializers.CharField()

class Meta:
model = PatientData


class MedicalHistorySerializer(serializers.ModelSerializer):
history_data = HistoryDataSerializer(many=True)
patient_data = PatientDataSerializer()
#history_data = HistoryDataSerializer
class Meta:
model = MedicalHistory

'''
pid = serializers.IntegerField(source='patientdata.pid')
pubpid = serializers.CharField(source='patientdata.pubpid')
ss = serializers.CharField(source='patientdata.ss')
date = serializers.DateTimeField(source='patientdata.date')
fname = serializers.CharField(source='patientdata.fname')
lname = serializers.CharField(source='patientdata.lname')
mname = serializers.CharField(source='patientdata.mname')
dob = serializers.DateField(source='patientdata.dob')
sex = serializers.CharField(source='patientdata.sex')
status = serializers.CharField(source='patientdata.status')
email = serializers.CharField(source='patientdata.email')
street = serializers.CharField(source='patientdata.street')
postal_code = serializers.CharField(source='patientdata.postal_code')
city = serializers.CharField(source='patientdata.city')
state = serializers.CharField(source='patientdata.state')
country_code = serializers.CharField(source='patientdata.country_code')
phone_contact = serializers.CharField(source='patientdata.phone_contact')
phone_cell = serializers.CharField(source='patientdata.phone_cell')
'''
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
@@ -0,0 +1,31 @@
from django.conf.urls import url, include
from rest_framework.authtoken import views as rest_views
from api import views
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
#router.register(r'records/patient-data', views.PatientDataViewSet)
router.register(r'records/history-data', views.HistoryDataViewSet)
router.register(r'records/medical-history', views.MedicalHistoryViewSet)


"""
API Endpoints for authentication
"""
urlpatterns = [
url(r'^', include(router.urls)), # API Routing
url(r'^token/$', rest_views.obtain_auth_token), # POST to get token
url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), # Authenticate to API
]

"""
API Endpoints for app functionality
"""


urlpatterns += [
url(r'^records/(?P<pid>[0-9]+)/history-data', views.HistoryDataList.as_view()), # Return a list of visits based on pid
url(r'^records/patient-data', views.PatientDataList.as_view())
]
@@ -0,0 +1,60 @@
from django.shortcuts import render
from django.contrib.auth.models import User, Group
from api.models import PatientData, HistoryData, MedicalHistory
from rest_framework import viewsets
from api.serializers import UserSerializer, GroupSerializer, PatientDataSerializer, HistoryDataSerializer, MedicalHistorySerializer
from django.template import RequestContext
from django.shortcuts import render_to_response
from rest_framework import filters, generics
from rest_framework import authentication, permissions


def index(request):
return render_to_response('bootstrap/index.html')


class UserViewSet(viewsets.ModelViewSet):
# API endpoint that allows users to be viewed or deleted
queryset = User.objects.all()
serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
# API endpoint that allows groups to be viewed or edited
queryset = Group.objects.all()
serializer_class = GroupSerializer


class PatientDataViewSet(viewsets.ModelViewSet):
# API endpoint for patient data to be viewed or added to
queryset = PatientData.objects.all()
serializer_class = PatientDataSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('fname', 'lname', '',)


class HistoryDataViewSet(viewsets.ModelViewSet):
# API endpoint for patient data to be viewed or added to
queryset = HistoryData.objects.all()
serializer_class = HistoryDataSerializer


class MedicalHistoryViewSet(viewsets.ModelViewSet):
queryset = MedicalHistory.objects.all()
serializer_class = MedicalHistorySerializer


class HistoryDataList(generics.ListAPIView):
serializer_class = HistoryDataSerializer
#authentication_classes = (authentication.TokenAuthentication)
#permission_classes = (permissions.IsAuthenticatedOrReadOnly)

def get_queryset(self):
pid = self.kwargs['pid']
return HistoryData.objects.filter(pid=pid)

class PatientDataList(generics.ListAPIView):
serializer_class = PatientDataSerializer
queryset = PatientData.objects.all()
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('fname', 'lname',)
@@ -28,11 +28,11 @@ RUN apt-get -y install binutils libproj-dev gdal-bin
##############################################################################

RUN apt-get install -y nano wget vim git
# build dependencies for postgres and image bindings
RUN apt-get install -y python-imaging python-psycopg2
# build dependencies for mariadb and image bindings
RUN apt-get install -y python-imaging python-dev mariadb-server libssl-dev libmariadb-client-lgpl-dev

##############################################################################
# setup startup script for gunicord WSGI service
# setup startup script for gunicorn WSGI service
##############################################################################

RUN groupadd webapps
Empty file.

Large diffs are not rendered by default.

@@ -1,7 +1,7 @@
"""
Django settings for mysite project.
Django settings for openemr_api_project project.
Generated by 'django-admin startproject' using Django 1.9.
Generated by 'django-admin startproject' using Django 1.9.1.
For more information on this file, see
https://docs.djangoproject.com/en/1.9/topics/settings/
@@ -14,13 +14,14 @@

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates')
STATIC_PATH = os.path.join(BASE_DIR, 'static')

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '+tb*r29ojm&cd4t!q*=&62q-n$9@lid!ct5xf-vq=n8o#q(s-l'
SECRET_KEY = '4uo)-l0f7^taz=9@qc2(1ui=cqzx6o_jm+swrtrnw&m!jkax_%'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
@@ -37,6 +38,11 @@
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api',
'rest_framework',
'rest_framework.authtoken',
'registration',
'django_filters',
]

MIDDLEWARE_CLASSES = [
@@ -55,7 +61,9 @@
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'DIRS': [
TEMPLATE_PATH,
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
@@ -76,8 +84,12 @@

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'openemr',
'USER': 'django',
'PASSWORD': 'django',
'HOST': '52.36.163.49', # remotehcs.com / 52.36.163.49
'PORT': '3306',
}
}

@@ -119,3 +131,36 @@
# https://docs.djangoproject.com/en/1.9/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = (
STATIC_PATH,
)

# REST Framework
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
),
'PAGE_SIZE': 5,
'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)
}

# Email Settings
EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = 'noreply@remotehcs.com'
EMAIL_HOST_PASSWORD = 'seniordesign15'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

# Registration Settings
REGISTRATION_OPEN = True
ACCOUNT_ACTIVATION_DAYS = 7
REGISTRATION_DEFAULT_FROM_EMAIL = "Remote HCS <noreply@remotehcs.com>"
REGISTRATION_AUTO_LOGIN = True
LOGIN_URL = '/accounts/login/'
LOGIN_REDIRECT_URL = '/admin'
@@ -1,4 +1,4 @@
"""mysite URL Configuration
"""openemr_api_project URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.9/topics/http/urls/
@@ -10,13 +10,18 @@
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Add an import: from blog import urls as blog_urls
2. Import the include() function: from django.conf.urls import url, include
3. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls))
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.conf.urls import url, include
from django.contrib import admin
from api import views

admin.autodiscover()

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', views.index, name='index'), # Home Page
url(r'^api/', include('api.urls')), # Route to all API calls
url(r'^admin/', admin.site.urls), # Admin portal
url(r'^accounts/', include('registration.backends.default.urls')), # User registration and login/logout
]
@@ -1,5 +1,5 @@
"""
WSGI config for mysite project.
WSGI config for openemr_api_project project.
It exposes the WSGI callable as a module-level variable named ``application``.
@@ -8,9 +8,15 @@
"""

import os
import sys

import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application

sys.path.append('/home/ec2-user/OpenEMR-API/Django/openemr_api_project')
sys.path.append('/home/ec2-user/OpenEMR-API/Django/openemr_api_project/openemr_api_project')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "openemr_api_project.settings")

application = get_wsgi_application()
#application = django.core.handlers.wsgi.WSGIHandler()
@@ -1,3 +1,9 @@
django==1.9
Django==1.9.1
django-filter==0.13.0
django-registration-redux==1.3
django-smtp-ssl==1.0
djangorestframework==3.3.2
mysqlclient==1.3.7
wheel==0.24.0
gunicorn==19.4.3
gevent==1.1a2
@@ -0,0 +1,9 @@
#!/bin/bash

# This script will start the Django server in the background on port 8000.

echo
echo starting...
python manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &
echo Django server started in background
echo

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,378 @@
/*!
* Start Bootstrap - Grayscale Bootstrap Theme (http://startbootstrap.com)
* Code licensed under the Apache License v2.0.
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/

body {
width: 100%;
height: 100%;
font-family: Lora,"Helvetica Neue",Helvetica,Arial,sans-serif;
color: #000;
background-color: #fff;
}

html {
width: 100%;
height: 100%;
}

h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0 0 35px;
text-transform: uppercase;
font-family: Montserrat,"Helvetica Neue",Helvetica,Arial,sans-serif;
font-weight: 700;
letter-spacing: 1px;
}

p {
margin: 0 0 25px;
font-size: 18px;
line-height: 1.5;
}

@media(min-width:768px) {
p {
margin: 0 0 35px;
font-size: 20px;
line-height: 1.6;
}
}

a {
color: #42dca3;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}

a:hover,
a:focus {
text-decoration: none;
color: #1d9b6c;
}

.light {
font-weight: 400;
}

.navbar-custom {
margin-bottom: 0;
border-bottom: 1px solid rgba(255,255,255,.3);
text-transform: uppercase;
font-family: Montserrat,"Helvetica Neue",Helvetica,Arial,sans-serif;
background-color: #000;
}

.navbar-custom .navbar-brand {
font-weight: 700;
}

.navbar-custom .navbar-brand:focus {
outline: 0;
}

.navbar-custom .navbar-brand .navbar-toggle {
padding: 4px 6px;
font-size: 16px;
color: #fff;
}

.navbar-custom .navbar-brand .navbar-toggle:focus,
.navbar-custom .navbar-brand .navbar-toggle:active {
outline: 0;
}

.navbar-custom a {
color: #fff;
}

.navbar-custom .nav li a {
-webkit-transition: background .3s ease-in-out;
-moz-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}

.navbar-custom .nav li a:hover {
outline: 0;
color: rgba(255,255,255,.8);
background-color: transparent;
}

.navbar-custom .nav li a:focus,
.navbar-custom .nav li a:active {
outline: 0;
background-color: transparent;
}

.navbar-custom .nav li.active {
outline: 0;
}

.navbar-custom .nav li.active a {
background-color: rgba(255,255,255,.3);
}

.navbar-custom .nav li.active a:hover {
color: #fff;
}

@media(min-width:768px) {
.navbar-custom {
padding: 20px 0;
border-bottom: 0;
letter-spacing: 1px;
background: 0 0;
-webkit-transition: background .5s ease-in-out,padding .5s ease-in-out;
-moz-transition: background .5s ease-in-out,padding .5s ease-in-out;
transition: background .5s ease-in-out,padding .5s ease-in-out;
}

.navbar-custom.top-nav-collapse {
padding: 0;
border-bottom: 1px solid rgba(255,255,255,.3);
background: #000;
}
}

.intro {
display: table;
width: 100%;
height: auto;
padding: 100px 0;
text-align: center;
color: #fff;
background: url(../img/intro-bg.jpg) no-repeat bottom center scroll;
background-color: #000;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
}

.intro .intro-body {
display: table-cell;
vertical-align: middle;
}

.intro .intro-body .brand-heading {
font-size: 40px;
}

.intro .intro-body .intro-text {
font-size: 18px;
}

@media(min-width:768px) {
.intro {
height: 100%;
padding: 0;
}

.intro .intro-body .brand-heading {
font-size: 100px;
}

.intro .intro-body .intro-text {
font-size: 26px;
}
}

.btn-circle {
width: 70px;
height: 70px;
margin-top: 15px;
padding: 7px 16px;
border: 2px solid #fff;
border-radius: 100%!important;
font-size: 40px;
color: #fff;
background: 0 0;
-webkit-transition: background .3s ease-in-out;
-moz-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}

.btn-circle:hover,
.btn-circle:focus {
outline: 0;
color: #fff;
background: rgba(255,255,255,.1);
}

.btn-circle i.animated {
-webkit-transition-property: -webkit-transform;
-webkit-transition-duration: 1s;
-moz-transition-property: -moz-transform;
-moz-transition-duration: 1s;
}

.btn-circle:hover i.animated {
-webkit-animation-name: pulse;
-moz-animation-name: pulse;
-webkit-animation-duration: 1.5s;
-moz-animation-duration: 1.5s;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-timing-function: linear;
}

@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
transform: scale(1);
}

50% {
-webkit-transform: scale(1.2);
transform: scale(1.2);
}

100% {
-webkit-transform: scale(1);
transform: scale(1);
}
}

@-moz-keyframes pulse {
0% {
-moz-transform: scale(1);
transform: scale(1);
}

50% {
-moz-transform: scale(1.2);
transform: scale(1.2);
}

100% {
-moz-transform: scale(1);
transform: scale(1);
}
}

.content-section {
padding-top: 100px;
padding-bottom: 50px;
}

.download-section {
width: 100%;
padding: 50px 0;
color: #fff;
background: url(../img/downloads-bg.jpg) no-repeat center center scroll;
background-color: #000;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
}

#map {
width: 100%;
height: 200px;
margin-top: 100px;
}

@media(min-width:767px) {
.content-section {
padding-top: 250px;
}

.download-section {
padding: 100px 0;
}

#map {
height: 400px;
margin-top: 250px;
}
}

.btn {
border-radius: 0;
text-transform: uppercase;
font-family: Montserrat,"Helvetica Neue",Helvetica,Arial,sans-serif;
font-weight: 400;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}

.btn-default {
border: 1px solid #fdea79;
color: #000;
background-color: #fdea79;
}

.btn-default:hover,
.btn-default:focus {
border: 1px solid #fdea79;
outline: 0;
color: #000;
background-color: #fdea79;
}

ul.banner-social-buttons {
margin-top: 0;
}

@media(max-width:1199px) {
ul.banner-social-buttons {
margin-top: 15px;
}
}

@media(max-width:767px) {
ul.banner-social-buttons li {
display: block;
margin-bottom: 20px;
padding: 0;
}

ul.banner-social-buttons li:last-child {
margin-bottom: 0;
}
}

footer {
clear: both;
position: relative;
padding: 50px 0;
color: #fff;
background: #19336f;
}

footer p {
margin: 0;
}

::-moz-selection {
text-shadow: none;
background: #fcfcfc;
background: rgba(255,255,255,.2);
}

::selection {
text-shadow: none;
background: #fcfcfc;
background: rgba(255,255,255,.2);
}

img::selection {
background: 0 0;
}

img::-moz-selection {
background: 0 0;
}

body {
webkit-tap-highlight-color: rgba(255,255,255,.2);
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,16 @@
// Bordered & Pulled
// -------------------------

.@{fa-css-prefix}-border {
padding: .2em .25em .15em;
border: solid .08em @fa-border-color;
border-radius: .1em;
}

.pull-right { float: right; }
.pull-left { float: left; }

.@{fa-css-prefix} {
&.pull-left { margin-right: .3em; }
&.pull-right { margin-left: .3em; }
}
@@ -0,0 +1,11 @@
// Base Class Definition
// -------------------------

.@{fa-css-prefix} {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
width: (18em / 14);
text-align: center;
}
@@ -0,0 +1,17 @@
/*!
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/

@import "variables.less";
@import "mixins.less";
@import "path.less";
@import "core.less";
@import "larger.less";
@import "fixed-width.less";
@import "list.less";
@import "bordered-pulled.less";
@import "spinning.less";
@import "rotated-flipped.less";
@import "stacked.less";
@import "icons.less";

Large diffs are not rendered by default.

@@ -0,0 +1,13 @@
// Icon Sizes
// -------------------------

/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.@{fa-css-prefix}-2x { font-size: 2em; }
.@{fa-css-prefix}-3x { font-size: 3em; }
.@{fa-css-prefix}-4x { font-size: 4em; }
.@{fa-css-prefix}-5x { font-size: 5em; }
@@ -0,0 +1,19 @@
// List Icons
// -------------------------

.@{fa-css-prefix}-ul {
padding-left: 0;
margin-left: @fa-li-width;
list-style-type: none;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
position: absolute;
left: -@fa-li-width;
width: @fa-li-width;
top: (2em / 14);
text-align: center;
&.@{fa-css-prefix}-lg {
left: (-@fa-li-width + (4em / 14));
}
}
@@ -0,0 +1,25 @@
// Mixins
// --------------------------

.fa-icon() {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

.fa-icon-rotate(@degrees, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
-webkit-transform: rotate(@degrees);
-ms-transform: rotate(@degrees);
transform: rotate(@degrees);
}

.fa-icon-flip(@horiz, @vert, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
-webkit-transform: scale(@horiz, @vert);
-ms-transform: scale(@horiz, @vert);
transform: scale(@horiz, @vert);
}
@@ -0,0 +1,14 @@
/* FONT PATH
* -------------------------- */

@font-face {
font-family: 'FontAwesome';
src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}
@@ -0,0 +1,20 @@
// Rotated & Flipped Icons
// -------------------------

.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }

.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }

// Hook for IE8-9
// -------------------------

:root .@{fa-css-prefix}-rotate-90,
:root .@{fa-css-prefix}-rotate-180,
:root .@{fa-css-prefix}-rotate-270,
:root .@{fa-css-prefix}-flip-horizontal,
:root .@{fa-css-prefix}-flip-vertical {
filter: none;
}
@@ -0,0 +1,29 @@
// Spinning Icons
// --------------------------

.@{fa-css-prefix}-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}

@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@@ -0,0 +1,20 @@
// Stacked Icons
// -------------------------

.@{fa-css-prefix}-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }

Large diffs are not rendered by default.

@@ -0,0 +1,16 @@
// Bordered & Pulled
// -------------------------

.#{$fa-css-prefix}-border {
padding: .2em .25em .15em;
border: solid .08em $fa-border-color;
border-radius: .1em;
}

.pull-right { float: right; }
.pull-left { float: left; }

.#{$fa-css-prefix} {
&.pull-left { margin-right: .3em; }
&.pull-right { margin-left: .3em; }
}
@@ -0,0 +1,11 @@
// Base Class Definition
// -------------------------

.#{$fa-css-prefix} {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
width: (18em / 14);
text-align: center;
}

Large diffs are not rendered by default.

@@ -0,0 +1,13 @@
// Icon Sizes
// -------------------------

/* makes the font 33% larger relative to the icon container */
.#{$fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.#{$fa-css-prefix}-2x { font-size: 2em; }
.#{$fa-css-prefix}-3x { font-size: 3em; }
.#{$fa-css-prefix}-4x { font-size: 4em; }
.#{$fa-css-prefix}-5x { font-size: 5em; }
@@ -0,0 +1,19 @@
// List Icons
// -------------------------

.#{$fa-css-prefix}-ul {
padding-left: 0;
margin-left: $fa-li-width;
list-style-type: none;
> li { position: relative; }
}
.#{$fa-css-prefix}-li {
position: absolute;
left: -$fa-li-width;
width: $fa-li-width;
top: (2em / 14);
text-align: center;
&.#{$fa-css-prefix}-lg {
left: -$fa-li-width + (4em / 14);
}
}
@@ -0,0 +1,25 @@
// Mixins
// --------------------------

@mixin fa-icon() {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

@mixin fa-icon-rotate($degrees, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: rotate($degrees);
-ms-transform: rotate($degrees);
transform: rotate($degrees);
}

@mixin fa-icon-flip($horiz, $vert, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: scale($horiz, $vert);
-ms-transform: scale($horiz, $vert);
transform: scale($horiz, $vert);
}
@@ -0,0 +1,14 @@
/* FONT PATH
* -------------------------- */

@font-face {
font-family: 'FontAwesome';
src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
//src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}
@@ -0,0 +1,20 @@
// Rotated & Flipped Icons
// -------------------------

.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }

.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }

// Hook for IE8-9
// -------------------------

:root .#{$fa-css-prefix}-rotate-90,
:root .#{$fa-css-prefix}-rotate-180,
:root .#{$fa-css-prefix}-rotate-270,
:root .#{$fa-css-prefix}-flip-horizontal,
:root .#{$fa-css-prefix}-flip-vertical {
filter: none;
}
@@ -0,0 +1,29 @@
// Spinning Icons
// --------------------------

.#{$fa-css-prefix}-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}

@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@@ -0,0 +1,20 @@
// Stacked Icons
// -------------------------

.#{$fa-css-prefix}-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
.#{$fa-css-prefix}-inverse { color: $fa-inverse; }

Large diffs are not rendered by default.

@@ -0,0 +1,17 @@
/*!
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/

@import "variables";
@import "mixins";
@import "path";
@import "core";
@import "larger";
@import "fixed-width";
@import "list";
@import "bordered-pulled";
@import "spinning";
@import "rotated-flipped";
@import "stacked";
@import "icons";
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,35 @@
/*!
* Start Bootstrap - Grayscale Bootstrap Theme (http://startbootstrap.com)
* Code licensed under the Apache License v2.0.
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/

// jQuery to collapse the navbar on scroll
function collapseNavbar() {
if ($(".navbar").offset().top > 50) {
$(".navbar-fixed-top").addClass("top-nav-collapse");
} else {
$(".navbar-fixed-top").removeClass("top-nav-collapse");
}
}

$(window).scroll(collapseNavbar);
$(document).ready(collapseNavbar);

// jQuery for page scrolling feature - requires jQuery Easing plugin
$(function() {
$('a.page-scroll').bind('click', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top
}, 1500, 'easeInOutExpo');
event.preventDefault();
});
});

// Closes the Responsive Menu on Menu Item Click
$('.navbar-collapse ul li a').click(function() {
if ($(this).attr('class') != 'dropdown-toggle active' && $(this).attr('class') != 'dropdown-toggle') {
$('.navbar-toggle:visible').click();
}
});

Large diffs are not rendered by default.

@@ -0,0 +1,66 @@
{% load i18n %}
<!DOCTYPE html>
<html lang="en">

<head>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

{% block meta %}
<meta name="description" content="">
<meta name="author" content="">
{% endblock %}

<title>RemoteHCS{% block title %}{% endblock %}</title>

<!-- Bootstrap Core CSS -->
<link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">

{% block head %}{% endblock %}

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

</head>


<div id="content">

<!-- Header -->
{% block header %}
<a href="{% url 'index' %}">{% trans "Home" %}</a> |

{% if user.is_authenticated %}
{% trans "Logged in" %}: {{ user.username }}
(<a href="{% url 'auth_logout' %}">{% trans "Log out" %}</a> |
<a href="{% url 'auth_password_change' %}">{% trans "Change password" %}</a>)
{% else %}
<a href="{% url 'auth_login' %}">{% trans "Log in" %}</a>
{% endif %}
<hr />
{% endblock %}


<!-- Body Content -->
{% block content %}

{% endblock %}


<!-- Footer -->
{% block footer %}
<footer>
<div class="container text-center">
<p>Copyright &copy; RemoteHCS 2014</p>
</div>
</footer>
{% endblock %}

</div>
</html>
@@ -0,0 +1,145 @@
{% extends 'base.html' %}


<!-- Within Head tag -->
{% block head %}
<!-- Custom CSS -->
<link href="/static/bootstrap/css/grayscale.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="/static/bootstrap/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
{% endblock %}




<body id="page-top" data-spy="scroll" data-target=".navbar-fixed-top">

{% block header %}
<!-- Navigation -->
<nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse">
<i class="fa fa-bars" style="color:#fff;"></i>
</button>
<a class="navbar-brand page-scroll" href="#page-top">
<span class="light">Remote </span><i class="fa fa-plus-circle"></i> HCS
</a>
</div>

<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-right navbar-main-collapse">
<ul class="nav navbar-nav">
<!-- Hidden li included to remove active class from about link when scrolled up past about section -->
<li class="hidden">
<a href="#page-top"></a>
</li>
<li>
<a class="page-scroll" href="#about">About</a>
</li>
<!-- No downloads
<li>
<a class="page-scroll" href="#download">Download</a>
</li>
-->
<li>
<a class="page-scroll" href="#contact">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
{% endblock %}

{% block content %}
<!-- Intro Header -->
<header class="intro">
<div class="intro-body">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<h1 class="brand-heading">Remote HCS</h1>
<p class="intro-text">An open source, mobile solution for OpenEMR.<br>Created at Boston University.</p>
<ul class="list-inline banner-social-buttons">
<li>
<a href="/api" class="btn btn-default btn-lg"><i class="fa fa-code fa-fw"></i> <span class="network-name">API</span></a>
</li>
<li>
<a href="/admin" class="btn btn-default btn-lg"><i class="fa fa-cog fa-fw"></i> <span class="network-name">Admin</span></a>
</li>
<li>
<a href="http://remotehcs.com/openemr" class="btn btn-default btn-lg"><i class="fa fa-user-md fa-fw"></i> <span class="network-name">OpenEMR</span></a>
</li>
<li>
<a href="/accounts/register" class="btn btn-default btn-lg"><i class="fa fa-user fa-fw"></i> <span class="network-name">Make User</span></a>
</li>
</ul>
<a href="#about" class="btn btn-circle page-scroll">
<i class="fa fa-angle-double-down animated"></i>
</a>
</div>
</div>
</div>
</div>
</header>

<!-- About Section -->
<section id="about" class="container content-section text-center">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2>About RemoteHCS</h2>
<p>This is under development :)</p>
</div>
</div>
</section>

<!-- Download Section -->
<!-- No downloads
<section id="download" class="content-section text-center">
<div class="download-section">
<div class="container">
<div class="col-lg-8 col-lg-offset-2">
<h2>Download Grayscale</h2>
<p>You can download Grayscale for free on the preview page at Start Bootstrap.</p>
<a href="http://startbootstrap.com/template-overviews/grayscale/" class="btn btn-default btn-lg">Visit Download Page</a>
</div>
</div>
</div>
</section>
-->

<!-- Contact Section -->
<section id="contact" class="container content-section text-center">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2>Contact Us</h2>
<p>Feel free to email us to provide some feedback on our project, give us suggestions, or to just say hello!</p>
<p><a href="mailto:noreply@remotehcs.com">noreply@remotehcs.com</a>
</p>
<ul class="list-inline banner-social-buttons">
<li>
<a href="https://github.com/ryanoflaherty/OpenEMR-API" class="btn btn-default btn-lg"><i class="fa fa-github fa-fw"></i> <span class="network-name">Github</span></a>
</li>
</ul>
</div>
</div>
</section>

<!-- jQuery -->
<script src="/static/bootstrap/js/jquery.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="/static/bootstrap/js/bootstrap.min.js"></script>

<!-- Plugin JavaScript -->
<script src="/static/bootstrap/js/jquery.easing.min.js"></script>

<!-- Custom Theme JavaScript -->
<script src="/static/bootstrap/js/grayscale.js"></script>

{% endblock %}
</body>
@@ -0,0 +1,8 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}

<p>{% trans "Account activation failed" %}</p>

{% endblock %}
@@ -0,0 +1,16 @@
{% extends "base.html" %}
{% load i18n %}

{% block header %}
<header>
<nav>
<a href="/">Home</a>
</nav>
</header>
{% endblock %}

{% block content %}
<section id="login" class="container content-section text-center">
<p>{% trans "Your account is now activated." %}</p>
</section>
{% endblock %}
@@ -0,0 +1,6 @@
{% load i18n %}
{% trans "Activate account at" %} {{ site.name }}:

http://remotehcs.com:8000{% url 'registration_activate' activation_key %}

{% blocktrans %}Link is valid for {{ expiration_days }} days.{% endblocktrans %}
@@ -0,0 +1 @@
{% load i18n %}{% trans "Account activation on" %} {{ site.name }}
@@ -0,0 +1,19 @@
{% extends 'base.html' %}
{% load i18n %}

{% block title %} | Login {% endblock %}

{% block content %}
<section id="login" class="container content-section text-center">
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}

<input type="submit" value="{% trans 'Log in' %}" />
<input type="hidden" name="next" value="{{ next }}" />
</form>

<p style="padding-top:20px">{% trans "Forgot password" %}? <a href="{% url 'auth_password_reset' %}">{% trans "Reset it" %}</a>!</p>
<p>{% trans "Not member" %}? <a href="{% url 'registration_register' %}">{% trans "Register" %}</a>!</p>
</section>
{% endblock %}
@@ -0,0 +1,6 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}
<p>{% trans "Logged out" %}</p>
{% endblock %}
@@ -0,0 +1,6 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}
<p>{% trans "Password changed" %}</p>
{% endblock %}
@@ -0,0 +1,11 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}

<input type="submit" value="{% trans 'Submit' %}" />
</form>
{% endblock %}
@@ -0,0 +1,10 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}

<p>{% trans "Password reset successfully" %}</p>

<p><a href="{% url 'auth_login' %}">{% trans "Log in" %}</a></p>

{% endblock %}
@@ -0,0 +1,21 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}

{% if validlink %}

<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}

<input type="submit" value="{% trans 'Submit' %}" />
</form>

{% else %}

<p>{% trans "Password reset failed" %}</p>

{% endif %}

{% endblock %}
@@ -0,0 +1,6 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}
<p>{% trans "Email with password reset instructions has been sent." %}</p>
{% endblock %}
@@ -0,0 +1,5 @@
{% load i18n %}
{% blocktrans %}Reset password at {{ site_name }}{% endblocktrans %}:
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url 'auth_password_reset_confirm' uid token %}
{% endblock %}
@@ -0,0 +1,11 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}

<input type="submit" value="{% trans 'Submit' %}" />
</form>
{% endblock %}
@@ -0,0 +1,6 @@
{% extends "base.html" %}
{% load i18n %}

{% block content %}
<p>{% trans "Registration is currently closed." %}</p>
{% endblock %}
@@ -0,0 +1,16 @@
{% extends "base.html" %}
{% load i18n %}

{% block header %}
<header>
<nav>
<a href="/">Home</a>
</nav>
</header>
{% endblock %}

{% block content %}
<section id="login" class="container content-section text-center">
<p>{% trans "You are now registered. Activation email sent." %}</p>
</section>
{% endblock %}
@@ -0,0 +1,21 @@
{% extends "base.html" %}
{% load i18n %}

{% block header %}
<header>
<nav>
<a href="/">Home</a>
</nav>
</header>
{% endblock %}

{% block content %}
<section id="login" class="container content-section text-center">
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}

<input type="submit" value="{% trans 'Submit' %}" />
</form>
</section>
{% endblock %}