ER-Flow/Client/src/components/DeskMenu.tsx

158 lines
5.7 KiB
TypeScript
Executable File

import React from "react";
import './DeskMenu.scss';
import {PatientState, OccupationState as OS, TaskState as TS} from "../share/BedProps"
import {SetState} from "../share/NetSetState";
export interface DeskMenuState {
ind: number,
elem: number,
offsetX: number,
offsetY: number,
open: boolean
}
interface Props {
state: DeskMenuState;
s: PatientState;
onStateChange: (state: SetState, arg?: any) => void;
onClose: () => void;
}
export class DeskMenu extends React.Component<Props, {}> {
render() {
let options;
if (this.props.s.occupation === OS.TO_CLEAN) {
options = (<>
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.DISCHARGE_PATIENT, false)}>
<p className='brush'>Mark Cleaned</p>
</div>
<hr />
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.MESSAGE)}>
<p className='message'>Message</p>
</div>
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.DISABLE, true)}>
<p className='disable'>Disable</p>
</div>
</>);
}
else if (this.props.s.occupation === OS.UNOCCUPIED) {
options = (<>
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.ASSIGN_PATIENT)}>
<p className='assign'>Assign Patient</p>
</div>
<hr />
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.MESSAGE)}>
<p className='message'>Message</p>
</div>
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.DISABLE, true)}>
<p className='disable'>Disable</p>
</div>
</>);
}
else if (this.props.s.occupation === OS.DISABLED) {
options = (<>
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.DISABLE, false)}>
<p className='assign'>Enable</p>
</div>
</>);
}
else {
options = (<>
{/*Send Bloodwork*/}
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.SENT_BLOODWORK, this.props.s.bloodwork !== TS.SENT)}>
{this.props.s.bloodwork === TS.SENT &&
<div className="checkbox checked"/>}
<p className={this.props.s.bloodwork !== TS.SENT ? "bloodwork" : ""}>
{(this.props.s.bloodwork === TS.SENT ? "Sent" : "Send") + " for Bloodwork"}</p>
</div>
{/*Return Bloodwork*/}
{this.props.s.bloodwork !== TS.NONE && <div className="DeskMenu-menuOption sub"
onClick={() => this.props.onStateChange(SetState.RECV_BLOODWORK, this.props.s.bloodwork !== TS.RETURNED)}>
{this.props.s.bloodwork === TS.RETURNED &&
<div className="checkbox checked"/>}
<p className={this.props.s.bloodwork !== TS.RETURNED ? "bloodwork" : ""}>Returned from Bloodwork</p>
</div>}
{/*Send Imaging*/}
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.SENT_IMAGING, this.props.s.imaging !== TS.SENT)}>
{this.props.s.imaging === TS.SENT &&
<div className="checkbox checked"/>}
<p className={this.props.s.imaging !== TS.SENT ? "imaging" : ""}>
{(this.props.s.imaging === TS.SENT ? "Sent" : "Send") + " for Imaging"}</p>
</div>
{/*Return Imaging*/}
{this.props.s.imaging !== TS.NONE && <div className="DeskMenu-menuOption sub"
onClick={() => this.props.onStateChange(SetState.RECV_IMAGING, this.props.s.imaging !== TS.RETURNED)}>
{this.props.s.imaging === TS.RETURNED &&
<div className="checkbox checked"/>}
<p className={this.props.s.imaging !== TS.RETURNED ? "imaging" : ""}>Returned from Imaging</p>
</div>}
{/*Send Consult*/}
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.SENT_CONSULT, this.props.s.consult !== TS.SENT)}>
{this.props.s.consult === TS.SENT &&
<div className="checkbox checked"/>}
<p className={this.props.s.consult !== TS.SENT ? "consult" : ""}>
{(this.props.s.consult === TS.SENT ? "Sent" : "Send") + " for Consult"}</p>
</div>
{/*Return Consult*/}
{this.props.s.consult !== TS.NONE && <div className="DeskMenu-menuOption sub"
onClick={() => this.props.onStateChange(SetState.RECV_CONSULT, this.props.s.consult !== TS.RETURNED)}>
{this.props.s.consult === TS.RETURNED &&
<div className="checkbox checked"/>}
<p className={this.props.s.consult !== TS.RETURNED ? "consult" : ""}>Returned from Consult</p>
</div>}
{/*Pending Discharge*/}
{(this.props.s.consult === TS.RETURNED || this.props.s.bloodwork === TS.RETURNED ||
this.props.s.imaging === TS.RETURNED || this.props.s.occupation === OS.PENDING_DISCHARGE) && <>
<hr />
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange((this.props.s.occupation === OS.PENDING_DISCHARGE) ?
SetState.ASSIGN_PATIENT : SetState.PATIENT_PENDING_DISCHARGE)}>
<div className={"checkbox " + (this.props.s.occupation === OS.PENDING_DISCHARGE ? "checked" : "")}/>
<p>Pending Discharge</p>
</div>
</>}
<hr />
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.MESSAGE)}>
<p className='message'>Message</p>
</div>
<div className="DeskMenu-menuOption"
onClick={() => this.props.onStateChange(SetState.DISCHARGE_PATIENT, false)}>
<p className='discharge'>Discharge</p>
</div>
</>);
}
return (
<div className={"DeskMenu " + (this.props.state.open ? "open" : "")}>
<div className="DeskMenu-mouseCatcher" onClick={this.props.onClose}/>
<div className="DeskMenu-menuWrap" style={{left: this.props.state.offsetX, top: this.props.state.offsetY}}>
{options}
</div>
</div>
);
}
}