class CreateClinician implements Runnable {

    @Override
    public void run() {

        if (manager.doesStaffIdExist(staffId)) {
            // staff ID is taken
            outputStream.println("Staff ID " + staffId + " is already taken");
            return;
        }

        if (!RegionValidator.isValid(country, region)) {
            outputStream.printf("%s is not a valid NZ region%n", region);
            return;
        }

        Clinician clinician = new Clinician(
                firstName,
                middleNames,
                lastName,
                workAddress,
                region,
                country,
                staffId,
                password);

        Action action = new CreateClinicianAction(clinician, manager);

        outputStream.println(invoker.execute(action));

        LOGGER.log(Level.INFO, action.getExecuteText());
    }

    public  CreateClinician(PrintStream outputStream, ActionInvoker invoker);
    public  CreateClinician(ClinicianManager manager, ActionInvoker invoker);

}