 to sunlight, can be purchased and used first thing in the morning to relieve symptoms of SAD [2].
- Supplement with Vitamin D. Research investigating the association between Vitamin D and SAD suggests that taking 100,000 IU (one-time dose) may improve symptoms [3].
- Counselling. Therapeutic counselling approaches provide support to individuals with Seasonal Affective Disorder. Cognitive Behavioural Therapy (CBT) has been effective in alleviating symptoms of SAD [4].
- Consume nutritious foods. In addition to Vitamin D, the consumption of B vitamins, omega-3 polyunsaturated fatty acids, zinc, and antioxidants, are also essential for neural functions. Studies demonstrate that deficiency in these nutrients may result in altered memory function and cognitive impairment, as well as the development of major depressive disorders [5].
If you believe you may be experiencing Seasonal Affective Disorder, speak to your doctor. Consult with a healthcare practitioner before implementing any vitamins or nutritional supplements.
References
- Melrose, S. (2015). Seasonal Affective Disorder: An Overview of Assessment and Treatment Approaches. Depression research and treatment, 2015, 178564.
- Weil, A. Light Therapy. [Fact Sheet] Tempe, Ariz, USA: Andrew Weil MD; 2015.. [Google Scholar]
- Stewart, A.E., Roecklein, K.A., Tanner, S., & Kimlin, M.G. Possible contributions of skin pigmentation and vitamin D in a polyfactorial model of seasonal affective disorder. Medical Hypotheses. 2014;83(5):517–525. doi: 10.1016/j.mehy.2014.09.010. [PubMed] [CrossRef] [Google Scholar]
- Rohan, K.J., Mahon, J.N., Evans, M., et al. Randomized trial of cognitive-behavioral therapy versus light therapy for seasonal affective disorder: acute outcomes. The American Journal of Psychiatry. 2015;172(9):862–869. doi: 10.1176/appi.ajp.2015.14101293. [PMC free article] [PubMed] [CrossRef] [Google Scholar]
- Sarris, J., Logan, A.C., Akbaraly, T.N., Amminger, G.P., Balanza-Martinez, V., Freeman, M.P., et al. (2015). Nutritional medicine as mainstream in psychiatry. Lancet Psychiatry 2, 271–274. 10.1016/S2215-0366(14)00051-0 [PubMed] [CrossRef] [Google Scholar]<commit_before>/**
 *
 */
package uk.org.taverna.scufl2.api.configurations;

import java.net.URI;

import uk.org.taverna.scufl2.api.activity.Activity;
import uk.org.taverna.scufl2.api.common.AbstractNamedChild;
import uk.org.taverna.scufl2.api.common.Child;
import uk.org.taverna.scufl2.api.common.Configurable;
import uk.org.taverna.scufl2.api.common.Typed;
import uk.org.taverna.scufl2.api.common.Visitor;
import uk.org.taverna.scufl2.api.common.WorkflowBean;
import uk.org.taverna.scufl2.api.core.Processor;
import uk.org.taverna.scufl2.api.core.Workflow;
import uk.org.taverna.scufl2.api.dispatchstack.DispatchStackLayer;
import uk.org.taverna.scufl2.api.port.Port;
import uk.org.taverna.scufl2.api.profiles.Profile;
import uk.org.taverna.scufl2.api.property.PropertyResource;

/**
 * Configuration of a {@link Configurable} workflow bean.
 * <p>
 * A configuration is activated by a {@link Profile}, and provides a link to the
 * {@link #getPropertyResource()} containing the properties to configure the bean, like an
 * {@link Activity}.
 * <p>
 * A configuration is of a certain (RDF) <strong>type</strong>, as defined by
 * {@link PropertyResource#getTypeURI()} on the - which determines which properties are required and
 * optional. For instance, the type
 * <code>http://ns.taverna.org.uk/2010/activity/wsdl/ConfigType</code> requires the property
 * <code>http://ns.taverna.org.uk/2010/activity/wsdl/operation</code>.
 * <p>
 * These requirements are described in the {@link ConfigurationDefinition} which
 * {@link ConfigurationDefinition#getConfigurableType()} matches this configuration's
 * {@link #getTypeURI()}. <strong>TODO: Where are the ConfigurationDefinitions found?</strong>
 * 
 * @author <NAME>
 * @author <NAME>
 * 
 */
public class Configuration extends AbstractNamedChild implements Child<Profile>, Typed {
	private Configurable configures;
	private Profile parent;
	private PropertyResource propertyResource = new PropertyResource();

	/**
	 * Constructs a <code>Configuration</code> with a random UUID as the name.
	 */
	public Configuration() {
		super();
	}

	/**
	 * Constructs a <code>Configuration</code> with the specified name.
	 * 
	 * @param name
	 *            the name of the <code>Configuration</code>. <strong>Must not</strong> be
	 *            <code>null</code> or an empty String.
	 */
	public Configuration(String name) {
		super(name);
	}

	@Override
	public boolean accept(Visitor visitor) {
		if (visitor.visitEnter(this) && getPropertyResource()!= null) {
			getPropertyResource().accept(visitor);
		}
		return visitor.visitLeave(this);
	}

	/**
	 * Returns the type of the <code>Configuration</code>.
	 * 
	 * @return the type of the <code>Configuration</code>
	 */
	@Override
	public URI getConfigurableType() {
		return getPropertyResource().getTypeURI();
	}

	/**
	 * Returns the {@link Configurable} workflow bean that is configured. Typically an
	 * {@link Activity} or {@link DispatchStackLayer}, but in theory also {@link Processor},
	 * {@link Workflow} and {@link Port} can be configured.
	 * 
	 * @return the <code>Configurable</code> <code>WorkflowBean</code> that is configured
	 */
	public Configurable getConfigures() {
		return configures;
	}

	@Override
	public Profile getParent() {
		return parent;
	}

	/**
	 * Returns the underlying {@link PropertyResource} which contains the properties set by this
	 * configuration.
	 * 
	 * @return the backing {@link PropertyResource}.
	 */
	public PropertyResource getPropertyResource() {
		return propertyResource;
	}

	/**
	 * Sets the type of the <code>Configuration</code>.
	 * 
	 * @param type
	 *            the type of the <code>Configuration</code>.
	 */
	@Override
	public void setConfigurableType(URI type) {
		getPropertyResource().setTypeURI(type);
	}

	/**
	 * Sets the {@link Configurable} {@link WorkflowBean} that is configured.
	 * 
	 * @param configurable
	 *            the <code>Configurable</code> <code>WorkflowBean</code> that is configured
	 */
	public void setConfigures(Configurable configurable) {
		configures = configurable;
	}

	@Override
	public void setParent(Profile parent) {
		if (this.parent!= null && this.parent!= parent) {
			this.parent.getConfigurations().remove(this);
		}
		this.parent = parent;
		if (parent!= null) {
			parent.getConfigurations().add(this);
		}

	}

	/**
	 * Sets the underlying {@link PropertyResource} which contains the properties set by this
	 * configuration.
	 * 
	 * @param propertyResource
	 *            the underlying <code>PropertyResource</code> which contains the properties set by
	 *            this configuration
	 */
	public void setPropertyResource(PropertyResource propertyResource) {
		this.propertyResource = propertyResource;
	}

}<commit_msg>Deprecated getConfigurableTyped() as it was confusing, added getType()<commit_after>/**
 *
 */
package uk.org.taverna.scufl2.api.configurations;

import java.net.URI;

import uk.org.taverna.scufl2.api.activity.Activity;
import uk.org