blood bank
This commit is contained in:
65
src/entity/blood-bank/blood_dispatch.ts
Normal file
65
src/entity/blood-bank/blood_dispatch.ts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
Index,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodRequest } from "./blood_request";
|
||||||
|
import { BloodUnit } from "./blood_unit";
|
||||||
|
import { Room } from "../room";
|
||||||
|
import { User } from "../users";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_dispatch" })
|
||||||
|
@Index(["dispatch_no"], { unique: true })
|
||||||
|
export class BloodDispatch {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 64, unique: true })
|
||||||
|
dispatch_no: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodRequest, (req) => req.dispatches, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_request: BloodRequest;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodUnit, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_unit: BloodUnit;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
destination_room: Room;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
dispatched_by: User;
|
||||||
|
|
||||||
|
@Column({ type: "timestamp", nullable: true })
|
||||||
|
dispatched_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "boolean", default: false })
|
||||||
|
completed: boolean;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "text" })
|
||||||
|
transfusion_notes: string;
|
||||||
|
|
||||||
|
@Column({ type: "timestamp", nullable: true })
|
||||||
|
transfusion_at: Date;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
58
src/entity/blood-bank/blood_donor.ts
Normal file
58
src/entity/blood-bank/blood_donor.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
OneToMany,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodUnit } from "./blood_unit";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_donor" })
|
||||||
|
export class BloodDonor {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 64, unique: true })
|
||||||
|
donor_no: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
full_name: string;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: true })
|
||||||
|
birth_date: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 32 })
|
||||||
|
gender: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 8 })
|
||||||
|
blood_type: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 8 })
|
||||||
|
rh: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 32 })
|
||||||
|
phone: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "text" })
|
||||||
|
address: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 32, default: "active" })
|
||||||
|
status: string;
|
||||||
|
|
||||||
|
@OneToMany(() => BloodUnit, (unit) => unit.donor)
|
||||||
|
blood_units: BloodUnit[];
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
81
src/entity/blood-bank/blood_request.ts
Normal file
81
src/entity/blood-bank/blood_request.ts
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
OneToMany,
|
||||||
|
Index,
|
||||||
|
} from "typeorm";
|
||||||
|
import { EmrPatient } from "../emr/emr_patient";
|
||||||
|
import { EmrRegistration } from "../emr/emr_registration";
|
||||||
|
import { Room } from "../room";
|
||||||
|
import { User } from "../users";
|
||||||
|
import { BloodRequestStatus } from "../../types/blood_request_status";
|
||||||
|
import { BloodRequestItem } from "./blood_request_item";
|
||||||
|
import { CrossMatch } from "./cross_match";
|
||||||
|
import { BloodDispatch } from "./blood_dispatch";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_request" })
|
||||||
|
@Index(["request_no"], { unique: true })
|
||||||
|
export class BloodRequest {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 64, unique: true })
|
||||||
|
request_no: string;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: BloodRequestStatus,
|
||||||
|
nullable: false,
|
||||||
|
default: BloodRequestStatus.WAITING,
|
||||||
|
})
|
||||||
|
status: BloodRequestStatus;
|
||||||
|
|
||||||
|
@ManyToOne(() => EmrPatient, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
patient: EmrPatient;
|
||||||
|
|
||||||
|
@ManyToOne(() => EmrRegistration, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
registration: EmrRegistration;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
requesting_room: Room;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
doctor: User;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 32, default: "normal" })
|
||||||
|
priority: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "text" })
|
||||||
|
notes: string;
|
||||||
|
|
||||||
|
@OneToMany(() => BloodRequestItem, (item) => item.blood_request, { cascade: true })
|
||||||
|
request_items: BloodRequestItem[];
|
||||||
|
|
||||||
|
@OneToMany(() => CrossMatch, (cm) => cm.blood_request)
|
||||||
|
cross_matches: CrossMatch[];
|
||||||
|
|
||||||
|
@OneToMany(() => BloodDispatch, (d) => d.blood_request)
|
||||||
|
dispatches: BloodDispatch[];
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
50
src/entity/blood-bank/blood_request_item.ts
Normal file
50
src/entity/blood-bank/blood_request_item.ts
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodRequest } from "./blood_request";
|
||||||
|
import { BloodComponentType } from "../../types/blood_component_type";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_request_item" })
|
||||||
|
export class BloodRequestItem {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodRequest, (req) => req.request_items, { onDelete: "CASCADE" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_request: BloodRequest;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: BloodComponentType,
|
||||||
|
nullable: false,
|
||||||
|
})
|
||||||
|
component_type: BloodComponentType;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 8 })
|
||||||
|
abo: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 8 })
|
||||||
|
rh: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "int", default: 1 })
|
||||||
|
quantity: number;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
44
src/entity/blood-bank/blood_stock.ts
Normal file
44
src/entity/blood-bank/blood_stock.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodUnit } from "./blood_unit";
|
||||||
|
import { Room } from "../room";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_stock" })
|
||||||
|
export class BloodStock {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodUnit, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_unit: BloodUnit;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
room: Room | null;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "int", default: 1 })
|
||||||
|
quantity: number;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 64 })
|
||||||
|
batch: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
51
src/entity/blood-bank/blood_stock_movement.ts
Normal file
51
src/entity/blood-bank/blood_stock_movement.ts
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodUnit } from "./blood_unit";
|
||||||
|
import { Room } from "../room";
|
||||||
|
import { User } from "../users";
|
||||||
|
import { BloodStockMovementType } from "../../types/blood_stock_movement_type";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_stock_movement" })
|
||||||
|
export class BloodStockMovement {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodUnit, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_unit: BloodUnit;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
from_room: Room;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
to_room: Room;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "int", default: 1 })
|
||||||
|
quantity: number;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: BloodStockMovementType,
|
||||||
|
nullable: false,
|
||||||
|
})
|
||||||
|
movement_type: BloodStockMovementType;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "text" })
|
||||||
|
notes: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
performed_by: User;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
}
|
||||||
82
src/entity/blood-bank/blood_unit.ts
Normal file
82
src/entity/blood-bank/blood_unit.ts
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
OneToMany,
|
||||||
|
Index,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodDonor } from "./blood_donor";
|
||||||
|
import { BloodUnitStatus } from "../../types/blood_unit_status";
|
||||||
|
import { BloodComponentType } from "../../types/blood_component_type";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_unit" })
|
||||||
|
@Index(["unit_number"], { unique: true })
|
||||||
|
export class BloodUnit {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 64, unique: true })
|
||||||
|
unit_number: string;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: BloodComponentType,
|
||||||
|
nullable: false,
|
||||||
|
default: BloodComponentType.WHOLE_BLOOD,
|
||||||
|
})
|
||||||
|
component_type: BloodComponentType;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 8 })
|
||||||
|
abo: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 8 })
|
||||||
|
rh: string;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: BloodUnitStatus,
|
||||||
|
nullable: false,
|
||||||
|
default: BloodUnitStatus.QUARANTINE,
|
||||||
|
})
|
||||||
|
status: BloodUnitStatus;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: false })
|
||||||
|
collection_date: Date;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: false })
|
||||||
|
exp_date: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 64 })
|
||||||
|
storage_temp: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 64 })
|
||||||
|
volume_ml: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodDonor, (donor) => donor.blood_units, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
donor: BloodDonor;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodUnit, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
parent_unit: BloodUnit;
|
||||||
|
|
||||||
|
@OneToMany(() => BloodUnit, (unit) => unit.parent_unit)
|
||||||
|
child_units: BloodUnit[];
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
44
src/entity/blood-bank/blood_waste_log.ts
Normal file
44
src/entity/blood-bank/blood_waste_log.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodUnit } from "./blood_unit";
|
||||||
|
import { User } from "../users";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "blood_waste_log" })
|
||||||
|
export class BloodWasteLog {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodUnit, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_unit: BloodUnit;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "text" })
|
||||||
|
reason: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
discarded_by: User;
|
||||||
|
|
||||||
|
@Column({ type: "timestamp", nullable: false })
|
||||||
|
discarded_at: Date;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
58
src/entity/blood-bank/cross_match.ts
Normal file
58
src/entity/blood-bank/cross_match.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { BloodRequest } from "./blood_request";
|
||||||
|
import { BloodUnit } from "./blood_unit";
|
||||||
|
import { User } from "../users";
|
||||||
|
|
||||||
|
@Entity({ schema: "blood_bank", name: "cross_match" })
|
||||||
|
export class CrossMatch {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodRequest, (req) => req.cross_matches, { onDelete: "CASCADE" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_request: BloodRequest;
|
||||||
|
|
||||||
|
@ManyToOne(() => BloodUnit, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn()
|
||||||
|
blood_unit: BloodUnit;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 32 })
|
||||||
|
result: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "boolean", default: false })
|
||||||
|
compatibility: boolean;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "text" })
|
||||||
|
notes: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn()
|
||||||
|
performed_by: User;
|
||||||
|
|
||||||
|
@Column({ type: "timestamp", nullable: true })
|
||||||
|
performed_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "boolean", default: false })
|
||||||
|
verified: boolean;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
}
|
||||||
@ -5,4 +5,5 @@ export * from "./schema/finances";
|
|||||||
export * from "./schema/procurement";
|
export * from "./schema/procurement";
|
||||||
export * from "./schema/pharmacy";
|
export * from "./schema/pharmacy";
|
||||||
export * from "./schema/pharmacy_logistic";
|
export * from "./schema/pharmacy_logistic";
|
||||||
export * from "./schema/cashier";
|
export * from "./schema/cashier";
|
||||||
|
export * from "./schema/blood_bank";
|
||||||
13
src/schema/blood_bank.ts
Normal file
13
src/schema/blood_bank.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export * from "../types/blood_unit_status";
|
||||||
|
export * from "../types/blood_request_status";
|
||||||
|
export * from "../types/blood_component_type";
|
||||||
|
export * from "../types/blood_stock_movement_type";
|
||||||
|
export * from "../entity/blood-bank/blood_donor";
|
||||||
|
export * from "../entity/blood-bank/blood_unit";
|
||||||
|
export * from "../entity/blood-bank/blood_request";
|
||||||
|
export * from "../entity/blood-bank/blood_request_item";
|
||||||
|
export * from "../entity/blood-bank/cross_match";
|
||||||
|
export * from "../entity/blood-bank/blood_dispatch";
|
||||||
|
export * from "../entity/blood-bank/blood_waste_log";
|
||||||
|
export * from "../entity/blood-bank/blood_stock";
|
||||||
|
export * from "../entity/blood-bank/blood_stock_movement";
|
||||||
9
src/types/blood_component_type.ts
Normal file
9
src/types/blood_component_type.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Blood component types.
|
||||||
|
*/
|
||||||
|
export enum BloodComponentType {
|
||||||
|
WHOLE_BLOOD = "whole_blood",
|
||||||
|
RED_CELLS = "red_cells",
|
||||||
|
PLATELETS = "platelets",
|
||||||
|
PLASMA = "plasma",
|
||||||
|
}
|
||||||
12
src/types/blood_request_status.ts
Normal file
12
src/types/blood_request_status.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Workflow status for a blood request.
|
||||||
|
*/
|
||||||
|
export enum BloodRequestStatus {
|
||||||
|
WAITING = "waiting",
|
||||||
|
ORDERED = "ordered",
|
||||||
|
CROSSMATCHED = "crossmatched",
|
||||||
|
VERIFIED = "verified",
|
||||||
|
ISSUED = "issued",
|
||||||
|
COMPLETED = "completed",
|
||||||
|
CANCELED = "canceled",
|
||||||
|
}
|
||||||
9
src/types/blood_stock_movement_type.ts
Normal file
9
src/types/blood_stock_movement_type.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Blood stock movement types.
|
||||||
|
*/
|
||||||
|
export enum BloodStockMovementType {
|
||||||
|
RECEIVE = "receive",
|
||||||
|
TRANSFER = "transfer",
|
||||||
|
ISSUE = "issue",
|
||||||
|
DISCARD = "discard",
|
||||||
|
}
|
||||||
14
src/types/blood_unit_status.ts
Normal file
14
src/types/blood_unit_status.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Workflow status for a blood unit.
|
||||||
|
*/
|
||||||
|
export enum BloodUnitStatus {
|
||||||
|
COLLECTED = "collected",
|
||||||
|
QUARANTINE = "quarantine",
|
||||||
|
SCREENED = "screened",
|
||||||
|
AVAILABLE = "available",
|
||||||
|
RESERVED = "reserved",
|
||||||
|
ISSUED = "issued",
|
||||||
|
TRANSFUSED = "transfused",
|
||||||
|
DISCARDED = "discarded",
|
||||||
|
EXPIRED = "expired",
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user