Epizootic ulcerative syndrome

Epizootic ulcerative syndrome (EUS), also known as mycotic granulomatosis (MG) or red spot disease (RSD), is a disease caused by the water mould Aphanomyces invadans. It infects many freshwater and brackish fish species in the Asia-Pacific region and Australia. The disease is most commonly seen when there are low temperature and heavy rainfall in tropical and sub-tropical waters.

Clinical signs and diagnosis

At first, fish develop red spots on the skin. These lesions expand to form ulcers and extensive erosions filled with necrotic tissue and mycelium. This is followed by the development of granulomas on the internal organs and death.

A provisional diagnosis can be made by using squash preparations of the skeletal muscle from beneath an ulcer to identify the septate hyphae of the water mould. Definitive diagnosis can be made based on histopathogical findings and isolation of the pathogen.

Treatment and control

Infected fish should be moved into high quality water, where they may recover if their clinical signs are mild.

If disease occurs eradication is required. Once the disease is eradicated good husbandry, surveillance and biosecurity measures are necessary to prevent recurrence. In countries free of epizootic ulcerative syndrome, quarantine and health certificates are necessary for the movement of all live fish to prevent the introduction of the disease.

gollark: I have DashMap in here because of some vague dream of concurrently doing... stuff.
gollark: ```rustuse std::process::Command;use anyhow::Result;use std::path::Path;use std::fs;#[derive(serde::Serialize, serde::Deserialize, Debug)]struct RawServiceSpec { command: String, args: Vec<String>, name: Option<String>}#[derive(Debug)]struct ServiceSpec { command: String, args: Vec<String>, name: String}fn load_spec(path: &Path) -> Result<ServiceSpec> { let file = fs::read_to_string(path)?; let raw: RawServiceSpec = toml::from_str(&file)?; Ok(ServiceSpec { command: raw.command, args: raw.args, name: path.file_stem().unwrap().to_string_lossy().to_string() })}fn run_service(serv: ServiceSpec) -> Result<()> { println!("thread {:?}", serv); loop { println!("Starting"); let mut child = Command::new("/bin/env") .arg("python3") .arg("test.py") .spawn()?; child.wait()?; } Ok(())}fn main() -> Result<()> { let services = dashmap::DashMap::new(); for entry in fs::read_dir("./services")? { let s = load_spec(&entry?.path())?; services.insert(s.name.clone(), s); } let mut handles = Vec::new(); for e in services { handles.push(std::thread::spawn(|| run_service(e.1))); } for handle in handles { handle.join().unwrap(); } Ok(())}```
gollark: Well, I guess that's systemd replaced.
gollark: I can define a service in a TOML file and it's automatically restarted on exit and all.
gollark: So it does actually work now.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.