Example #1
0
class ItemModel(db.Model):
    __tablename__ = 'items'
    id = db.Column(db.Integer, primary_key=True)
    vegeName = db.Column(db.String(100))
    vegeQuantity = db.Column(db.Integer)
    vegePrice = db.Column(db.Integer)
    FarmerID = db.Column(db.Integer, db.ForeignKey('farmers.id'))
Example #2
0
class DepartmentsModel(db.Model):
    __tablename__ = "Departments"

    _id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String, nullable=False)
    name = db.Column(db.String, nullable=False)

    def json(self) -> Dict:
        return {"_id": self._id, "code": self.code, "name": self.name}
Example #3
0
class CourseInPlanModel(db.Model):
    __tablename__ = "CoursesInPlans"

    plan_id = db.Column(db.Integer,
                        db.ForeignKey("Plans._id"),
                        primary_key=True)
    course_id = db.Column(db.Integer,
                          db.ForeignKey("Courses._id"),
                          primary_key=True)

    def json(self) -> Dict:
        return {"plan_id": self.plan_id, "course_id": self.course_id}
Example #4
0
class Series(db.Model):
    __tablename__ = 'series'

    id = db.Column(db.Integer, primary_key=True)
    work_item_id = db.Column(db.Integer, db.ForeignKey('work_items.id'))
    uid = db.Column(db.String, index=True)  # Series Instance UID
    plane = db.Column(db.String, db.Enum('axial', 'sagittal', 'coronal'))
    created_on = db.Column(db.DateTime,
                           server_default=db.func.now(),
                           index=True)
    updated_on = db.Column(db.DateTime,
                           server_default=db.func.now(),
                           onupdate=db.func.now())
    massive_bleeding = db.Column(db.Boolean, default=False)
    findings = db.relationship('Finding', order_by='Finding.order')

    def __repr__(self):
        return "<Series(uid='{}', plane='{}', massive_bleeding={})>".format(
            self.uid, self.plane, self.massive_bleeding)

    def to_json_dict(self):
        return {
            'uid': self.uid,
            'plane': self.plane,
            'massiveBleeding': self.massive_bleeding
        }
Example #5
0
class Book(db.Model):
    __tablename__ = 'books'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(50))
    year = db.Column(db.Integer)
    author_id = db.Column(db.Integer,
                          db.ForeignKey('authors.id'),
                          nullable=False)

    def __init__(self, title, year, author_id=None):
        self.title = title
        self.year = year
        self.author_id = author_id

    def create(self):
        db.session.add(self)
        db.session.commit()
        return self
Example #6
0
class RouteModel(db.Model):
    __tablename__ = 'routes'
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.String)
    finish = db.Column(db.Integer)
    cost = db.Column(db.Float)
    totalProfit = db.Column(db.Float)
    jsonData = db.Column(db.JSON)
    FarmerID = db.Column(db.Integer)
Example #7
0
class Authors(db.Model):
    __tablename__ = 'authors'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    created = db.Column(db.DateTime, server_default=db.func.now())
    books = db.relationship('Book',
                            backref='Authors',
                            cascade="all, delete-orphan")

    def __init__(self, first_name, last_name, books=[]):
        self.first_name = first_name
        self.last_name = last_name
        self.books = books

    def create(self):
        db.session.add(self)
        db.session.commit()
        return self
Example #8
0
class FarmerModel(db.Model):
    __tablename__ = 'farmers'
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(32), index = True)
    name = db.Column(db.String(32))
    password_hash = db.Column(db.String(64))
    email = db.Column(db.String(50))
    address = db.Column(db.String(100))
    cellphone = db.Column(db.String(15))
    latitude = db.Column(db.String(50))
    longitude = db.Column(db.String(50))

    def hash_password(self, password):
        self.password_hash = pwd_context.encrypt(password)

    def verify_password(self, password):
        return pwd_context.verify(password, self.password_hash)
Example #9
0
class DriverModel(db.Model):
    __tablename__ = 'drivers'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32), index=True)
    licensePlate = db.Column(db.String(15))
    carCapacity = db.Column(db.Float)
    dynamicAddress = db.Column(db.String(100))
    dynamicLocation = db.Column(db.String(100))
Example #10
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

    def create(self):
        db.session.add(self)
        db.session.commit()
        return self

    @classmethod
    def find_by_username(cls, username):
        return cls.query.filter_by(username=username).first()

    @staticmethod
    def generate_hash(password):
        return sha256.hash(password)

    @staticmethod
    def verify_hash(password, hash):
        return sha256.verify(password, hash)
Example #11
0
class DynamicData(db.Model):
    __tablename__ = 'dynamic_data'
    id = db.Column(db.Integer, primary_key = True)
    static_data_id = db.Column(db.Integer, db.ForeignKey('static_data.id'), nullable=False)
    static_data = db.relationship('StaticData', back_populates='snap_shots')
    time_stamp = db.Column(db.String(255))
    upload_speed = db.Column(db.Integer)
    download_speed = db.Column(db.Integer)
    active_connection = db.Column(db.Boolean)
Example #12
0
class StaticData(db.Model):
    __tablename__ = 'static_data'
    id = db.Column(db.Integer, primary_key = True)
    host_name = db.Column(db.String(255))
    device_type = db.Column(db.String(255))
    operating_system = db.Column(db.String(255))
    mac_address = db.Column(db.String(255), unique=True)
    ip_address = db.Column(db.String(255))
    snap_shots = db.relationship('DynamicData', back_populates='static_data')
Example #13
0
class Device(db.Model):
    __tablename__ = 'devices'
    id = db.Column(db.Integer, primary_key=True)
    host_name = db.Column(db.String(255))
    device_type = db.Column(db.String(255))
    operating_system = db.Column(db.String(255))
    mac_address = db.Column(db.String(255), unique=True)
    ip_address = db.Column(db.String(255))
    upload_speed = db.Column(db.Integer)
    download_speed = db.Column(db.Integer)
    active_connection = db.Column(db.Boolean)

    def __init__(self, host_name, device_type, operating_system, mac_address,
                 ip_address, upload_speed, download_speed, active_connection):
        self.host_name = host_name
        self.device_type = device_type
        self.operating_system = operating_system
        self.mac_address = mac_address
        self.ip_address = ip_address
        self.upload_speed = upload_speed
        self.download_speed = download_speed
        self.active_connection = active_connection

    def update(self):
        self.update_active_connection()
        self.update_upload_download()

        db.session.commit()

    def update_active_connection(self):
        if random.randint(1, 5) > 4:
            self.active_connection = not self.active_connection

    def update_upload_download(self):
        if self.active_connection:
            self.upload_speed = random.randint(0, 12)
            self.download_speed = random.randint(0, 70)
        else:
            self.upload_speed = 0
            self.download_speed = 0
Example #14
0
class UserModel(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32), index=True)
    name = db.Column(db.String(32))
    password_hash = db.Column(db.String(64))
    email = db.Column(db.String(50))
    address = db.Column(db.String(100))
    cellphone = db.Column(db.String(15))
    permission = db.Column(db.Integer, default=0)

    order = db.relationship('OrderModel')

    def hash_password(self, password):
        self.password_hash = pwd_context.encrypt(password)

    def verify_password(self, password):
        return pwd_context.verify(password, self.password_hash)
Example #15
0
class OrderModel(db.Model):
    __tablename__ = 'orders'
    id = db.Column(db.Integer, primary_key=True)
    arrivalTime = db.Column(db.String(100))
    orderDate = db.Column(db.String(100))
    status = db.Column(db.Integer)
    address = db.Column(db.String(100))
    sequence = db.Column(db.Integer)

    foodName = db.Column(db.String(100))
    foodQuantity = db.Column(db.Float)
    foodPrice = db.Column(db.Float)
    profit = db.Column(db.Float)

    UserID = db.Column(db.Integer, db.ForeignKey('users.id'))
    FarmerID = db.Column(db.Integer, db.ForeignKey('farmers.id'))
    RouteID = db.Column(db.Integer, db.ForeignKey('routes.id'))
Example #16
0
class OrderModel(db.Model):
    __tablename__ = 'orders'
    id = db.Column(db.Integer, primary_key=True)
    arrivalTime = db.Column(db.String(100))
    status = db.Column(db.Integer)
    objectID = db.Column(db.Integer)
    weight = db.Column(db.Float)
    profit = db.Column(db.Float)
    location = db.Column(db.String(100))
    address = db.Column(db.String(100))
    sequence = db.Column(db.Integer)
    UserID = db.Column(db.Integer, db.ForeignKey('users.id'))
    RouteID = db.Column(db.Integer, db.ForeignKey('routes.id'))
Example #17
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    name = db.Column(db.String(80))
    password = db.Column(Password)
    role = db.Column(db.String(20), server_default='user', nullable=False)
    email = db.Column(db.String(120))
    load_finding_files = db.Column(Boolean, server_default='1', nullable=False)

    created_on = db.Column(db.DateTime)
    last_login_on = db.Column(db.DateTime)
    last_login_from = db.Column(db.String(80))

    worklist = db.relationship('WorkItem', order_by='WorkItem.id')

    def __init__(self,
                 username,
                 name,
                 password,
                 created_on,
                 email,
                 role='user',
                 load_finding_files=True):
        self.username = username
        self.name = name
        self.password = password
        self.role = role
        self.email = email
        self.created_on = created_on
        self.load_finding_files = load_finding_files

    def __repr__(self):
        return "<User(username='******', name='%s')>" % (self.username, self.name)

    @validates('password')
    def _validate_password(self, key, password):
        return getattr(type(self), key).type.validator(password)

    @property
    def is_admin(self):
        return self.role == 'admin'

    def to_json_dict(self):
        last_login = "******" if self.last_login_on is None else self.last_login_on.strftime(
            '%Y-%m-%d')
        created_on = "Not Available" if self.created_on is None else self.created_on.strftime(
            '%Y-%m-%d')
        last_login_from = "Not Available" if self.last_login_from is None else self.last_login_from
        email = "" if self.email is None else self.email
        load_finding_files = self.load_finding_files

        return {
            'id': self.id,
            'username': self.username,
            'name': self.name,
            'role': self.role,
            'created_on': created_on,
            'last_login_on': last_login,
            'email': email,
            'last_login_from': last_login_from,
            'load_finding_files': load_finding_files
        }
Example #18
0
class CourseModel(db.Model):
    __tablename__ = "Courses"

    _id = db.Column(db.Integer, primary_key=True)
    term = db.Column(db.String, nullable=False)
    code = db.Column(db.String, nullable=False)
    title = db.Column(db.String, nullable=False)
    section_type = db.Column(db.String, nullable=False)
    section_name = db.Column(db.String, nullable=False)
    days = db.Column(db.String)
    start_time = db.Column(db.String)
    end_time = db.Column(db.String)
    instructor = db.Column(db.String, nullable=False)
    building = db.Column(db.String, nullable=False)
    restrictions = db.Column(db.String)

    def json(self) -> Dict:
        return {
            "_id": self._id,
            "term": self.term,
            "code": self.code,
            "title": self.title,
            "section_type": self.section_type,
            "section_name": self.section_name,
            "days": self.days,
            "start_time": self.start_time,
            "end_time": self.end_time,
            "instructor": self.instructor,
            "building": self.building,
            "restrictions": self.restrictions
        }
Example #19
0
class WorkItem(db.Model):
    __tablename__ = 'work_items'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    uid = db.Column(db.String)                 # Study Instance UID
    accession_number = db.Column(db.String, index=True)
    patient_name = db.Column(db.String)
    patient_id = db.Column(db.String)
    study_date = db.Column(db.String)
    study_time = db.Column(db.String)
    body_part = db.Column(db.String, db.Enum(*DEFAULT_WINDOW_DEFS.keys()))
    status = db.Column(db.String)
    finalized_as = db.Column(db.String, db.Enum('positive', 'negative'))
    created_on = db.Column(db.DateTime, server_default=db.func.now())
    updated_on = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now())
    comment = db.Column(db.String)
    massive_bleeding = db.Column(db.Boolean, default=False)
    favorite = db.Column(db.Boolean, default=False)
    analyzed_by_aidoc = db.Column(db.Boolean, default=False)
    location = db.Column(db.String, db.Enum(*patientLocations))
    order_by = db.Column(db.Integer)

    series = db.relationship('Series', order_by='Series.created_on')
    findings = db.relationship('Finding', order_by='Finding.order')

    db.UniqueConstraint('user_id', 'uid', name='user_work_item_uq')

    def __init__(self, user_id, uid, accession_number, patient_name, patient_id, study_date, study_time, body_part, status='pending', analyzed_by_aidoc=True):
        self.user_id = user_id
        self.uid = uid
        self.accession_number = accession_number
        self.patient_name = patient_name
        self.patient_id = patient_id
        self.study_date = study_date
        self.study_time = study_time
        self.body_part = body_part
        self.status = status
        self.analyzed_by_aidoc = analyzed_by_aidoc

    def __repr__(self):
        return "<WorkItem(uid='%s', accession_number='%s', patient_name='%s', body_part='%s', status='%s')>" %\
               (self.uid, self.accession_number, self.patient_name, self.body_part, self.status)

    def get_patient_location(self):
        if self.location is not None:
            return self.location
        else:
            def generate_patient_location():
                if self.patient_name:
                    return patientLocations[int(string2hash(self.patient_name)) % len(patientLocations)]
                else:
                    return patientLocations[0]
            return generate_patient_location()

    def to_json_dict(self):
        dt = self.format_study_datetime()

        # calculate AI Findings column
        ai_findings = self.calc_ai_findings()
        return {
            'uid': self.uid,
            'accessionNumber': self.accession_number,
            'patientName': self.patient_name,
            'patientId': self.patient_id if self.patient_id else '-',
            'patientLocation': self.get_patient_location(),
            'studyTime':  dt,
            'bodyPart': self.body_part,
            'status': self.status,
            'massiveBleeding': self.massive_bleeding,
            'favorite': self.favorite,
            'finalized_as': self.finalized_as if self.finalized_as else '',
            'analyzed_by_aidoc': True if self.analyzed_by_aidoc is None else self.analyzed_by_aidoc,
            'ai_findings': ai_findings,
            'order_by': self.order_by
        }

    def calc_ai_findings(self):
        ai_findings_set = set()
        for f in self.findings:
            ai_findings_set.add(f.label)

        if len(ai_findings_set) < 3:
            return ', '.join(ai_findings_set)
        else:
            return 'Multi-Trauma'

    def format_study_datetime(self):
        if self.study_date and self.study_time:
            try:
                # handle milliseconds
                study_time = self.study_time[0:6]
                dt = datetime.strptime(self.study_date + study_time, '%Y%m%d%H%M%S')
                dt = dt.strftime(current_app.config.get('DATETIME_FORMAT'))
            except Exception:
                dt = '-'
        else:
            dt = '-'
        return dt
Example #20
0
class Finding(db.Model):
    __tablename__ = 'findings'

    id = db.Column(db.Integer, primary_key=True)
    work_item_id = db.Column(db.Integer, db.ForeignKey('work_items.id'))
    series_id = db.Column(db.Integer, db.ForeignKey('series.id'))
    finding_uid = db.Column(db.Integer)
    status = db.Column(db.String)
    label = db.Column(db.String(50))
    key_slice = db.Column(db.Integer)
    visualization_type = db.Column(db.String)
    locations = db.Column(db.String)
    original_locations = db.Column(db.String)
    order = db.Column(db.Integer)
    comment = db.Column(db.String)
    input_source_index = db.Column(Integer, server_default='0', nullable=False)
    contour = db.Column(db.String, server_default=None)

    def __init__(self,
                 work_item_id,
                 series_id,
                 finding_uid,
                 status,
                 label,
                 key_slice,
                 visualization_type,
                 locations,
                 order,
                 original_locations=None,
                 comment=None,
                 input_source_index=0,
                 contour=None):
        self.work_item_id = work_item_id
        self.series_id = series_id
        self.finding_uid = finding_uid
        self.status = status
        self.label = label
        self.key_slice = key_slice
        self.visualization_type = visualization_type
        self.locations = locations
        self.order = order
        self.original_locations = original_locations
        self.comment = comment
        self.input_source_index = input_source_index
        self.contour = contour

    def __repr__(self):
        return "<Finding(finding_uid='{}', status='{}', key_slice='{}')>".format(
            self.finding_uid, self.status, self.key_slice)

    def to_json_dict(self):
        return {
            'id':
            self.id,
            'series_id':
            self.series_id,
            'finding_uid':
            self.finding_uid,
            'label':
            self.label,
            'status':
            self.status,
            'key_slice':
            self.key_slice,
            'visualization_type':
            self.visualization_type,
            'locations':
            json.loads(self.locations),
            'original_locations':
            None if self.original_locations is None else json.loads(
                self.original_locations),
            'comment':
            self.comment,
            'order':
            self.order,
            'input_source_index':
            self.input_source_index,
            'contour':
            None if self.contour is None else json.loads(self.contour)
        }