feat: add medical test entities
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import { Submission } from './submission.entity';
|
||||
import { Question } from '@/modules/questions/entities/question.entity';
|
||||
import { Choice } from '@/modules/questions/entities/choice.entity';
|
||||
|
||||
@Entity()
|
||||
export class SubmissionAnswer {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@ManyToOne(() => Submission, (submission) => submission.answers, {
|
||||
onDelete: 'CASCADE',
|
||||
})
|
||||
submission: Submission;
|
||||
|
||||
@ManyToOne(() => Question, { onDelete: 'CASCADE' })
|
||||
question: Question;
|
||||
|
||||
@ManyToOne(() => Choice, { nullable: true, onDelete: 'CASCADE' })
|
||||
choice?: Choice;
|
||||
|
||||
@Column({ type: 'int', nullable: true })
|
||||
numericValue?: number;
|
||||
|
||||
@Column({
|
||||
type: 'varchar',
|
||||
length: 255,
|
||||
nullable: true,
|
||||
})
|
||||
textValue?: string;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import {
|
||||
Check,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
import { Submission } from './submission.entity';
|
||||
import { ResultRange } from '@/modules/scoring/entities/result-range.entity';
|
||||
|
||||
@Entity()
|
||||
@Check(`"probability" >= 0 AND "probability" <= 100`)
|
||||
export class SubmissionResult {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@ManyToOne(() => Submission, { onDelete: 'CASCADE' })
|
||||
submission: Submission;
|
||||
|
||||
@Column({ type: 'int', nullable: false })
|
||||
score: number;
|
||||
|
||||
@Column({ type: 'int', nullable: false })
|
||||
probability: number;
|
||||
|
||||
@ManyToOne(() => ResultRange, { onDelete: 'CASCADE' })
|
||||
resultRange: ResultRange;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import { Test } from '@/modules/tests/entities/test.entity';
|
||||
import { User } from '@/modules/users/entities/user.entity';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
import { SubmissionStatus } from '../enums/submission-status.enum';
|
||||
import { SubmissionAnswer } from './submission-answer.entity';
|
||||
|
||||
@Entity()
|
||||
export class Submission {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@ManyToOne(() => User, { nullable: true, onDelete: 'SET NULL' })
|
||||
user?: User;
|
||||
|
||||
@ManyToOne(() => Test, { onDelete: 'CASCADE' })
|
||||
test: Test;
|
||||
|
||||
@Column({
|
||||
type: 'enum',
|
||||
enum: SubmissionStatus,
|
||||
default: SubmissionStatus.IN_PROGRESS,
|
||||
})
|
||||
status: SubmissionStatus;
|
||||
|
||||
@OneToMany(() => SubmissionAnswer, (answer) => answer.submission)
|
||||
answers: Array<SubmissionAnswer>;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
export enum SubmissionStatus {
|
||||
IN_PROGRESS = 'in-progress',
|
||||
COMPLETED = 'completed',
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { Submission } from './entities/submission.entity';
|
||||
import { SubmissionAnswer } from './entities/submission-answer.entity';
|
||||
import { SubmissionResult } from './entities/submission-result.entity';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
TypeOrmModule.forFeature([Submission, SubmissionAnswer, SubmissionResult]),
|
||||
],
|
||||
})
|
||||
export class SubmissionsModule {}
|
||||
Reference in New Issue
Block a user