diff --git a/data/reasonCodes/reasoncodes.json b/data/reasonCodes/reasoncodes.json new file mode 100644 index 0000000..42d83ee --- /dev/null +++ b/data/reasonCodes/reasoncodes.json @@ -0,0 +1 @@ +{"GetReasonCodeListResult":{"reason":[{"code":"501","lateReason":"This train has been delayed by a broken down train","cancReason":"This train has been cancelled because of a broken down train"},{"code":"502","lateReason":"This train has been delayed by a broken windscreen on the train","cancReason":"This train has been cancelled because of a broken windscreen on the train"},{"code":"503","lateReason":"This train has been delayed by a shortage of trains because of accident damage","cancReason":"This train has been cancelled because of a shortage of trains because of accident damage"},{"code":"504","lateReason":"This train has been delayed by a shortage of trains because of extra safety inspections","cancReason":"This train has been cancelled because of a shortage of trains because of extra safety inspections"},{"code":"505","lateReason":"This train has been delayed by a shortage of trains because of vandalism","cancReason":"This train has been cancelled because of a shortage of trains because of vandalism"},{"code":"506","lateReason":"This train has been delayed by a shortage of trains following damage by snow and ice","cancReason":"This train has been cancelled because of a shortage of trains following damage by snow and ice"},{"code":"507","lateReason":"This train has been delayed by more trains than usual needing repairs at the same time","cancReason":"This train has been cancelled because of more trains than usual needing repairs at the same time"},{"code":"508","lateReason":"This train has been delayed by the train for this service having broken down","cancReason":"This train has been cancelled because of the train for this service having broken down"},{"code":"509","lateReason":"This train has been delayed by this train breaking down","cancReason":"This train has been cancelled because of this train breaking down"},{"code":"510","lateReason":"This train has been delayed by a collision between trains","cancReason":"This train has been cancelled because of a collision between trains"},{"code":"511","lateReason":"This train has been delayed by a collision with the buffers at a station","cancReason":"This train has been cancelled because of a collision with the buffers at a station"},{"code":"512","lateReason":"This train has been delayed by a derailed train","cancReason":"This train has been cancelled because of a derailed train"},{"code":"513","lateReason":"This train has been delayed by a derailment within the depot","cancReason":"This train has been cancelled because of a derailment within the depot"},{"code":"514","lateReason":"This train has been delayed by a low speed derailment","cancReason":"This train has been cancelled because of a low speed derailment"},{"code":"515","lateReason":"This train has been delayed by a train being involved in an accident","cancReason":"This train has been cancelled because of a train being involved in an accident"},{"code":"516","lateReason":"This train has been delayed by trains being involved in an accident","cancReason":"This train has been cancelled because of trains being involved in an accident"},{"code":"517","lateReason":"This train has been delayed by a fire at a station","cancReason":"This train has been cancelled because of a fire at a station"},{"code":"518","lateReason":"This train has been delayed by a fire at a station earlier today","cancReason":"This train has been cancelled because of a fire at a station earlier today"},{"code":"519","lateReason":"This train has been delayed by a landslip","cancReason":"This train has been cancelled because of a landslip"},{"code":"520","lateReason":"This train has been delayed by a fire next to the track","cancReason":"This train has been cancelled because of a fire next to the track"},{"code":"521","lateReason":"This train has been delayed by a fire on a train","cancReason":"This train has been cancelled because of a fire on a train"},{"code":"522","lateReason":"This train has been delayed by a member of on train staff being taken ill","cancReason":"This train has been cancelled because of a member of on train staff being taken ill"},{"code":"523","lateReason":"This train has been delayed by a shortage of on train staff","cancReason":"This train has been cancelled because of a shortage of on train staff"},{"code":"524","lateReason":"This train has been delayed by a shortage of train conductors","cancReason":"This train has been cancelled because of a shortage of train conductors"},{"code":"525","lateReason":"This train has been delayed by a shortage of train crew","cancReason":"This train has been cancelled because of a shortage of train crew"},{"code":"526","lateReason":"This train has been delayed by a shortage of train drivers","cancReason":"This train has been cancelled because of a shortage of train drivers"},{"code":"527","lateReason":"This train has been delayed by a shortage of train guards","cancReason":"This train has been cancelled because of a shortage of train guards"},{"code":"528","lateReason":"This train has been delayed by a shortage of train managers","cancReason":"This train has been cancelled because of a shortage of train managers"},{"code":"529","lateReason":"This train has been delayed by severe weather preventing train crew getting to work","cancReason":"This train has been cancelled because of severe weather preventing train crew getting to work"},{"code":"530","lateReason":"This train has been delayed by the train conductor being taken ill","cancReason":"This train has been cancelled because of the train conductor being taken ill"},{"code":"531","lateReason":"This train has been delayed by the train driver being taken ill","cancReason":"This train has been cancelled because of the train driver being taken ill"},{"code":"532","lateReason":"This train has been delayed by the train guard being taken ill","cancReason":"This train has been cancelled because of the train guard being taken ill"},{"code":"533","lateReason":"This train has been delayed by the train manager being taken ill","cancReason":"This train has been cancelled because of the train manager being taken ill"},{"code":"534","lateReason":"This train has been delayed by a passenger being taken ill at a station","cancReason":"This train has been cancelled because of a passenger being taken ill at a station"},{"code":"535","lateReason":"This train has been delayed by a passenger being taken ill on a train","cancReason":"This train has been cancelled because of a passenger being taken ill on a train"},{"code":"536","lateReason":"This train has been delayed by a passenger being taken ill on this train","cancReason":"This train has been cancelled because of a passenger being taken ill on this train"},{"code":"537","lateReason":"This train has been delayed by a passenger being taken ill at a station earlier today","cancReason":"This train has been cancelled because of a passenger being taken ill at a station earlier today"},{"code":"538","lateReason":"This train has been delayed by a passenger being taken ill on a train earlier today","cancReason":"This train has been cancelled because of a passenger being taken ill on a train earlier today"},{"code":"539","lateReason":"This train has been delayed by a passenger being taken ill on this train earlier in its journey","cancReason":"This train has been cancelled because of a passenger being taken ill on this train earlier in its journey"},{"code":"540","lateReason":"This train has been delayed by a person being hit by a train","cancReason":"This train has been cancelled because of a person being hit by a train"},{"code":"541","lateReason":"This train has been delayed by a person being hit by a train earlier today","cancReason":"This train has been cancelled because of a person being hit by a train earlier today"},{"code":"542","lateReason":"This train has been delayed by a collision at a level crossing","cancReason":"This train has been cancelled because of a collision at a level crossing"},{"code":"543","lateReason":"This train has been delayed by a fault with barriers at a level crossing","cancReason":"This train has been cancelled because of a fault with barriers at a level crossing"},{"code":"544","lateReason":"This train has been delayed by a road accident at a level crossing","cancReason":"This train has been cancelled because of a road accident at a level crossing"},{"code":"545","lateReason":"This train has been delayed by a road vehicle colliding with level crossing barriers","cancReason":"This train has been cancelled because of a road vehicle colliding with level crossing barriers"},{"code":"546","lateReason":"This train has been delayed by a road vehicle damaging track at a level crossing","cancReason":"This train has been cancelled because of a road vehicle damaging track at a level crossing"},{"code":"547","lateReason":"This train has been delayed by a problem currently under investigation","cancReason":"This train has been cancelled because of a problem currently under investigation"},{"code":"548","lateReason":"This train has been delayed by a burst water main near the railway","cancReason":"This train has been cancelled because of a burst water main near the railway"},{"code":"549","lateReason":"This train has been delayed by a chemical spillage near the railway","cancReason":"This train has been cancelled because of a chemical spillage near the railway"},{"code":"550","lateReason":"This train has been delayed by a fire near the railway involving gas cylinders","cancReason":"This train has been cancelled because of a fire near the railway involving gas cylinders"},{"code":"551","lateReason":"This train has been delayed by a fire near the railway suspected to involve gas cylinders","cancReason":"This train has been cancelled because of a fire near the railway suspected to involve gas cylinders"},{"code":"552","lateReason":"This train has been delayed by a fire on property near the railway","cancReason":"This train has been cancelled because of a fire on property near the railway"},{"code":"553","lateReason":"This train has been delayed by a gas leak near the railway","cancReason":"This train has been cancelled because of a gas leak near the railway"},{"code":"554","lateReason":"This train has been delayed by a road accident near the railway","cancReason":"This train has been cancelled because of a road accident near the railway"},{"code":"555","lateReason":"This train has been delayed by a wartime bomb near the railway","cancReason":"This train has been cancelled because of a wartime bomb near the railway"},{"code":"556","lateReason":"This train has been delayed by ambulance service dealing with an incident near the railway","cancReason":"This train has been cancelled because of ambulance service dealing with an incident near the railway"},{"code":"557","lateReason":"This train has been delayed by emergency services dealing with an incident near the railway","cancReason":"This train has been cancelled because of emergency services dealing with an incident near the railway"},{"code":"558","lateReason":"This train has been delayed by fire brigade dealing with an incident near the railway","cancReason":"This train has been cancelled because of fire brigade dealing with an incident near the railway"},{"code":"559","lateReason":"This train has been delayed by police dealing with an incident near the railway","cancReason":"This train has been cancelled because of police dealing with an incident near the railway"},{"code":"560","lateReason":"This train has been delayed by a boat colliding with a bridge","cancReason":"This train has been cancelled because of a boat colliding with a bridge"},{"code":"561","lateReason":"This train has been delayed by a fault with a swing bridge over a river","cancReason":"This train has been cancelled because of a fault with a swing bridge over a river"},{"code":"562","lateReason":"This train has been delayed by a problem with a river bridge","cancReason":"This train has been cancelled because of a problem with a river bridge"},{"code":"563","lateReason":"This train has been delayed by a problem with line-side equipment","cancReason":"This train has been cancelled because of a problem with line-side equipment"},{"code":"564","lateReason":"This train has been delayed by a security alert at a station","cancReason":"This train has been cancelled because of a security alert at a station"},{"code":"565","lateReason":"This train has been delayed by a security alert on another train","cancReason":"This train has been cancelled because of a security alert on another train"},{"code":"566","lateReason":"This train has been delayed by a security alert on this train","cancReason":"This train has been cancelled because of a security alert on this train"},{"code":"567","lateReason":"This train has been delayed by a train derailment earlier today","cancReason":"This train has been cancelled because of a train derailment earlier today"},{"code":"568","lateReason":"This train has been delayed by a train derailment yesterday","cancReason":"This train has been cancelled because of a train derailment yesterday"},{"code":"569","lateReason":"This train has been delayed by a fault occurring when attaching a part of a train","cancReason":"This train has been cancelled because of a fault occurring when attaching a part of a train"},{"code":"570","lateReason":"This train has been delayed by a fault occurring when attaching a part of this train","cancReason":"This train has been cancelled because of a fault occurring when attaching a part of this train"},{"code":"571","lateReason":"This train has been delayed by a fault occurring when detaching a part of a train","cancReason":"This train has been cancelled because of a fault occurring when detaching a part of a train"},{"code":"572","lateReason":"This train has been delayed by a fault occurring when detaching a part of this train","cancReason":"This train has been cancelled because of a fault occurring when detaching a part of this train"},{"code":"573","lateReason":"This train has been delayed by a fault on a train in front of this one","cancReason":"This train has been cancelled because of a fault on a train in front of this one"},{"code":"574","lateReason":"This train has been delayed by a fault on this train","cancReason":"This train has been cancelled because of a fault on this train"},{"code":"575","lateReason":"This train has been delayed by this train being late from the depot","cancReason":"This train has been cancelled because of this train being late from the depot"},{"code":"576","lateReason":"This train has been delayed by trespassers on the railway","cancReason":"This train has been cancelled because of trespassers on the railway"},{"code":"577","lateReason":"This train has been delayed by a bus colliding with a bridge","cancReason":"This train has been cancelled because of a bus colliding with a bridge"},{"code":"578","lateReason":"This train has been delayed by a lorry colliding with a bridge","cancReason":"This train has been cancelled because of a lorry colliding with a bridge"},{"code":"579","lateReason":"This train has been delayed by a road vehicle colliding with a bridge","cancReason":"This train has been cancelled because of a road vehicle colliding with a bridge"},{"code":"580","lateReason":"This train has been delayed by a bus colliding with a bridge earlier on this train's journey","cancReason":"This train has been cancelled because of a bus colliding with a bridge earlier on this train's journey"},{"code":"581","lateReason":"This train has been delayed by a bus colliding with a bridge earlier today","cancReason":"This train has been cancelled because of a bus colliding with a bridge earlier today"},{"code":"582","lateReason":"This train has been delayed by a lorry colliding with a bridge earlier on this train's journey","cancReason":"This train has been cancelled because of a lorry colliding with a bridge earlier on this train's journey"},{"code":"583","lateReason":"This train has been delayed by a lorry colliding with a bridge earlier today","cancReason":"This train has been cancelled because of a lorry colliding with a bridge earlier today"},{"code":"584","lateReason":"This train has been delayed by a road vehicle colliding with a bridge earlier on this train's journey","cancReason":"This train has been cancelled because of a road vehicle colliding with a bridge earlier on this train's journey"},{"code":"585","lateReason":"This train has been delayed by a road vehicle colliding with a bridge earlier today","cancReason":"This train has been cancelled because of a road vehicle colliding with a bridge earlier today"},{"code":"586","lateReason":"This train has been delayed by a broken down train earlier today","cancReason":"This train has been cancelled because of a broken down train earlier today"},{"code":"587","lateReason":"This train has been delayed by an earlier landslip","cancReason":"This train has been cancelled because of an earlier landslip"},{"code":"588","lateReason":"This train has been delayed by a fire next to the track earlier today","cancReason":"This train has been cancelled because of a fire next to the track earlier today"},{"code":"589","lateReason":"This train has been delayed by a fire on a train earlier today","cancReason":"This train has been cancelled because of a fire on a train earlier today"},{"code":"590","lateReason":"This train has been delayed by a coach becoming uncoupled on a train earlier in its journey","cancReason":"This train has been cancelled because of a coach becoming uncoupled on a train earlier in its journey"},{"code":"591","lateReason":"This train has been delayed by a coach becoming uncoupled on a train earlier today","cancReason":"This train has been cancelled because of a coach becoming uncoupled on a train earlier today"},{"code":"592","lateReason":"This train has been delayed by a coach becoming uncoupled on this train earlier in its journey","cancReason":"This train has been cancelled because of a coach becoming uncoupled on this train earlier in its journey"},{"code":"593","lateReason":"This train has been delayed by a coach becoming uncoupled on this train earlier today","cancReason":"This train has been cancelled because of a coach becoming uncoupled on this train earlier today"},{"code":"594","lateReason":"This train has been delayed by a train not stopping at a station it was supposed to earlier in its journey","cancReason":"This train has been cancelled because of a train not stopping at a station it was supposed to earlier in its journey"},{"code":"595","lateReason":"This train has been delayed by a train not stopping at a station it was supposed to earlier today","cancReason":"This train has been cancelled because of a train not stopping at a station it was supposed to earlier today"},{"code":"596","lateReason":"This train has been delayed by a train not stopping in the correct position at a station earlier in its journey","cancReason":"This train has been cancelled because of a train not stopping in the correct position at a station earlier in its journey"},{"code":"597","lateReason":"This train has been delayed by a train not stopping in the correct position at a station earlier today","cancReason":"This train has been cancelled because of a train not stopping in the correct position at a station earlier today"},{"code":"598","lateReason":"This train has been delayed by a train's automatic braking system being activated earlier in its journey","cancReason":"This train has been cancelled because of a train's automatic braking system being activated earlier in its journey"},{"code":"599","lateReason":"This train has been delayed by a train's automatic braking system being activated earlier today","cancReason":"This train has been cancelled because of a train's automatic braking system being activated earlier today"},{"code":"600","lateReason":"This train has been delayed by an operational incident earlier in its journey","cancReason":"This train has been cancelled because of an operational incident earlier in its journey"},{"code":"601","lateReason":"This train has been delayed by an operational incident earlier today","cancReason":"This train has been cancelled because of an operational incident earlier today"},{"code":"602","lateReason":"This train has been delayed by this train not stopping at a station it was supposed to earlier in its journey","cancReason":"This train has been cancelled because of this train not stopping at a station it was supposed to earlier in its journey"},{"code":"603","lateReason":"This train has been delayed by this train not stopping at a station it was supposed to earlier today","cancReason":"This train has been cancelled because of this train not stopping at a station it was supposed to earlier today"},{"code":"604","lateReason":"This train has been delayed by this train not stopping in the correct position at a station earlier in its journey","cancReason":"This train has been cancelled because of this train not stopping in the correct position at a station earlier in its journey"},{"code":"605","lateReason":"This train has been delayed by this train not stopping in the correct position at a station earlier today","cancReason":"This train has been cancelled because of this train not stopping in the correct position at a station earlier today"},{"code":"606","lateReason":"This train has been delayed by this train's automatic braking system being activated earlier in its journey","cancReason":"This train has been cancelled because of this train's automatic braking system being activated earlier in its journey"},{"code":"607","lateReason":"This train has been delayed by this train's automatic braking system being activated earlier today","cancReason":"This train has been cancelled because of this train's automatic braking system being activated earlier today"},{"code":"608","lateReason":"This train has been delayed by a collision at a level crossing earlier today","cancReason":"This train has been cancelled because of a collision at a level crossing earlier today"},{"code":"609","lateReason":"This train has been delayed by a collision at a level crossing yesterday","cancReason":"This train has been cancelled because of a collision at a level crossing yesterday"},{"code":"610","lateReason":"This train has been delayed by a fault with barriers at a level crossing earlier today","cancReason":"This train has been cancelled because of a fault with barriers at a level crossing earlier today"},{"code":"611","lateReason":"This train has been delayed by a fault with barriers at a level crossing yesterday","cancReason":"This train has been cancelled because of a fault with barriers at a level crossing yesterday"},{"code":"612","lateReason":"This train has been delayed by a road accident at a level crossing earlier today","cancReason":"This train has been cancelled because of a road accident at a level crossing earlier today"},{"code":"613","lateReason":"This train has been delayed by a road accident at a level crossing yesterday","cancReason":"This train has been cancelled because of a road accident at a level crossing yesterday"},{"code":"614","lateReason":"This train has been delayed by a road vehicle colliding with level crossing barriers earlier today","cancReason":"This train has been cancelled because of a road vehicle colliding with level crossing barriers earlier today"},{"code":"615","lateReason":"This train has been delayed by a road vehicle colliding with level crossing barriers yesterday","cancReason":"This train has been cancelled because of a road vehicle colliding with level crossing barriers yesterday"},{"code":"616","lateReason":"This train has been delayed by a road vehicle damaging track at a level crossing earlier today","cancReason":"This train has been cancelled because of a road vehicle damaging track at a level crossing earlier today"},{"code":"617","lateReason":"This train has been delayed by a road vehicle damaging track at a level crossing yesterday","cancReason":"This train has been cancelled because of a road vehicle damaging track at a level crossing yesterday"},{"code":"618","lateReason":"This train has been delayed by a burst water main near the railway earlier today","cancReason":"This train has been cancelled because of a burst water main near the railway earlier today"},{"code":"619","lateReason":"This train has been delayed by a burst water main near the railway yesterday","cancReason":"This train has been cancelled because of a burst water main near the railway yesterday"},{"code":"620","lateReason":"This train has been delayed by a chemical spillage near the railway earlier today","cancReason":"This train has been cancelled because of a chemical spillage near the railway earlier today"},{"code":"621","lateReason":"This train has been delayed by a chemical spillage near the railway yesterday","cancReason":"This train has been cancelled because of a chemical spillage near the railway yesterday"},{"code":"622","lateReason":"This train has been delayed by a fire near the railway involving gas cylinders earlier today","cancReason":"This train has been cancelled because of a fire near the railway involving gas cylinders earlier today"},{"code":"623","lateReason":"This train has been delayed by a fire near the railway involving gas cylinders yesterday","cancReason":"This train has been cancelled because of a fire near the railway involving gas cylinders yesterday"},{"code":"624","lateReason":"This train has been delayed by a fire near the railway suspected to involve gas cylinders earlier today","cancReason":"This train has been cancelled because of a fire near the railway suspected to involve gas cylinders earlier today"},{"code":"625","lateReason":"This train has been delayed by a fire near the railway suspected to involve gas cylinders yesterday","cancReason":"This train has been cancelled because of a fire near the railway suspected to involve gas cylinders yesterday"},{"code":"626","lateReason":"This train has been delayed by a fire on property near the railway earlier today","cancReason":"This train has been cancelled because of a fire on property near the railway earlier today"},{"code":"627","lateReason":"This train has been delayed by a fire on property near the railway yesterday","cancReason":"This train has been cancelled because of a fire on property near the railway yesterday"},{"code":"628","lateReason":"This train has been delayed by a gas leak near the railway earlier today","cancReason":"This train has been cancelled because of a gas leak near the railway earlier today"},{"code":"629","lateReason":"This train has been delayed by a gas leak near the railway yesterday","cancReason":"This train has been cancelled because of a gas leak near the railway yesterday"},{"code":"630","lateReason":"This train has been delayed by a road accident near the railway earlier today","cancReason":"This train has been cancelled because of a road accident near the railway earlier today"},{"code":"631","lateReason":"This train has been delayed by a road accident near the railway yesterday","cancReason":"This train has been cancelled because of a road accident near the railway yesterday"},{"code":"632","lateReason":"This train has been delayed by a wartime bomb near the railway earlier today","cancReason":"This train has been cancelled because of a wartime bomb near the railway earlier today"},{"code":"633","lateReason":"This train has been delayed by a wartime bomb near the railway yesterday","cancReason":"This train has been cancelled because of a wartime bomb near the railway yesterday"},{"code":"634","lateReason":"This train has been delayed by a wartime bomb which has now been made safe","cancReason":"This train has been cancelled because of a wartime bomb which has now been made safe"},{"code":"635","lateReason":"This train has been delayed by ambulance service dealing with an incident near the railway earlier today","cancReason":"This train has been cancelled because of ambulance service dealing with an incident near the railway earlier today"},{"code":"636","lateReason":"This train has been delayed by ambulance service dealing with an incident near the railway yesterday","cancReason":"This train has been cancelled because of ambulance service dealing with an incident near the railway yesterday"},{"code":"637","lateReason":"This train has been delayed by emergency services dealing with an incident near the railway earlier today","cancReason":"This train has been cancelled because of emergency services dealing with an incident near the railway earlier today"},{"code":"638","lateReason":"This train has been delayed by emergency services dealing with an incident near the railway yesterday","cancReason":"This train has been cancelled because of emergency services dealing with an incident near the railway yesterday"},{"code":"639","lateReason":"This train has been delayed by fire brigade dealing with an incident near the railway earlier today","cancReason":"This train has been cancelled because of fire brigade dealing with an incident near the railway earlier today"},{"code":"640","lateReason":"This train has been delayed by fire brigade dealing with an incident near the railway yesterday","cancReason":"This train has been cancelled because of fire brigade dealing with an incident near the railway yesterday"},{"code":"641","lateReason":"This train has been delayed by police dealing with an incident near the railway earlier today","cancReason":"This train has been cancelled because of police dealing with an incident near the railway earlier today"},{"code":"642","lateReason":"This train has been delayed by police dealing with an incident near the railway yesterday","cancReason":"This train has been cancelled because of police dealing with an incident near the railway yesterday"},{"code":"643","lateReason":"This train has been delayed by a boat colliding with a bridge earlier today","cancReason":"This train has been cancelled because of a boat colliding with a bridge earlier today"},{"code":"644","lateReason":"This train has been delayed by a fault with a swing bridge over a river earlier today","cancReason":"This train has been cancelled because of a fault with a swing bridge over a river earlier today"},{"code":"645","lateReason":"This train has been delayed by a problem with a river bridge earlier today","cancReason":"This train has been cancelled because of a problem with a river bridge earlier today"},{"code":"646","lateReason":"This train has been delayed by an earlier problem with line-side equipment","cancReason":"This train has been cancelled because of an earlier problem with line-side equipment"},{"code":"647","lateReason":"This train has been delayed by a security alert earlier today","cancReason":"This train has been cancelled because of a security alert earlier today"},{"code":"648","lateReason":"This train has been delayed by a fault on this train which is now fixed","cancReason":"This train has been cancelled because of a fault on this train which is now fixed"},{"code":"649","lateReason":"This train has been delayed by trespassers on the railway earlier in this train's journey","cancReason":"This train has been cancelled because of trespassers on the railway earlier in this train's journey"},{"code":"650","lateReason":"This train has been delayed by trespassers on the railway earlier today","cancReason":"This train has been cancelled because of trespassers on the railway earlier today"},{"code":"651","lateReason":"This train has been delayed by a bicycle on the track","cancReason":"This train has been cancelled because of a bicycle on the track"},{"code":"652","lateReason":"This train has been delayed by a road vehicle blocking the railway","cancReason":"This train has been cancelled because of a road vehicle blocking the railway"},{"code":"653","lateReason":"This train has been delayed by a supermarket trolley on the track","cancReason":"This train has been cancelled because of a supermarket trolley on the track"},{"code":"654","lateReason":"This train has been delayed by a train hitting an obstruction on the line","cancReason":"This train has been cancelled because of a train hitting an obstruction on the line"},{"code":"655","lateReason":"This train has been delayed by a tree blocking the railway","cancReason":"This train has been cancelled because of a tree blocking the railway"},{"code":"656","lateReason":"This train has been delayed by an obstruction on the track","cancReason":"This train has been cancelled because of an obstruction on the track"},{"code":"657","lateReason":"This train has been delayed by checking reports of an obstruction on the line","cancReason":"This train has been cancelled because of checking reports of an obstruction on the line"},{"code":"658","lateReason":"This train has been delayed by this train hitting an obstruction on the line","cancReason":"This train has been cancelled because of this train hitting an obstruction on the line"},{"code":"659","lateReason":"This train has been delayed by a bicycle on the track earlier on this train's journey","cancReason":"This train has been cancelled because of a bicycle on the track earlier on this train's journey"},{"code":"660","lateReason":"This train has been delayed by a bicycle on the track earlier today","cancReason":"This train has been cancelled because of a bicycle on the track earlier today"},{"code":"661","lateReason":"This train has been delayed by a road vehicle blocking the railway earlier on this train's journey","cancReason":"This train has been cancelled because of a road vehicle blocking the railway earlier on this train's journey"},{"code":"662","lateReason":"This train has been delayed by a road vehicle blocking the railway earlier today","cancReason":"This train has been cancelled because of a road vehicle blocking the railway earlier today"},{"code":"663","lateReason":"This train has been delayed by a supermarket trolley on the track earlier on this train's journey","cancReason":"This train has been cancelled because of a supermarket trolley on the track earlier on this train's journey"},{"code":"664","lateReason":"This train has been delayed by a supermarket trolley on the track earlier today","cancReason":"This train has been cancelled because of a supermarket trolley on the track earlier today"},{"code":"665","lateReason":"This train has been delayed by a train hitting an obstruction on the line earlier on this train's journey","cancReason":"This train has been cancelled because of a train hitting an obstruction on the line earlier on this train's journey"},{"code":"666","lateReason":"This train has been delayed by a train hitting an obstruction on the line earlier today","cancReason":"This train has been cancelled because of a train hitting an obstruction on the line earlier today"},{"code":"667","lateReason":"This train has been delayed by a tree blocking the railway earlier on this train's journey","cancReason":"This train has been cancelled because of a tree blocking the railway earlier on this train's journey"},{"code":"668","lateReason":"This train has been delayed by a tree blocking the railway earlier today","cancReason":"This train has been cancelled because of a tree blocking the railway earlier today"},{"code":"669","lateReason":"This train has been delayed by an obstruction on the track earlier on this train's journey","cancReason":"This train has been cancelled because of an obstruction on the track earlier on this train's journey"},{"code":"670","lateReason":"This train has been delayed by an obstruction on the track earlier today","cancReason":"This train has been cancelled because of an obstruction on the track earlier today"},{"code":"671","lateReason":"This train has been delayed by checking reports of an obstruction on the line earlier on this train's journey","cancReason":"This train has been cancelled because of checking reports of an obstruction on the line earlier on this train's journey"},{"code":"672","lateReason":"This train has been delayed by checking reports of an obstruction on the line earlier today","cancReason":"This train has been cancelled because of checking reports of an obstruction on the line earlier today"},{"code":"673","lateReason":"This train has been delayed by this train hitting an obstruction on the line earlier in its journey","cancReason":"This train has been cancelled because of this train hitting an obstruction on the line earlier in its journey"},{"code":"674","lateReason":"This train has been delayed by this train hitting an obstruction on the line earlier on this train's journey","cancReason":"This train has been cancelled because of this train hitting an obstruction on the line earlier on this train's journey"},{"code":"675","lateReason":"This train has been delayed by this train hitting an obstruction on the line earlier today","cancReason":"This train has been cancelled because of this train hitting an obstruction on the line earlier today"},{"code":"676","lateReason":"This train has been delayed by a coach becoming uncoupled on a train","cancReason":"This train has been cancelled because of a coach becoming uncoupled on a train"},{"code":"677","lateReason":"This train has been delayed by a coach becoming uncoupled on this train","cancReason":"This train has been cancelled because of a coach becoming uncoupled on this train"},{"code":"678","lateReason":"This train has been delayed by a train not stopping at a station it was supposed to","cancReason":"This train has been cancelled because of a train not stopping at a station it was supposed to"},{"code":"679","lateReason":"This train has been delayed by a train not stopping in the correct position at a station","cancReason":"This train has been cancelled because of a train not stopping in the correct position at a station"},{"code":"680","lateReason":"This train has been delayed by a train's automatic braking system being activated","cancReason":"This train has been cancelled because of a train's automatic braking system being activated"},{"code":"681","lateReason":"This train has been delayed by an operational incident","cancReason":"This train has been cancelled because of an operational incident"},{"code":"682","lateReason":"This train has been delayed by this train not stopping at a station it was supposed to","cancReason":"This train has been cancelled because of this train not stopping at a station it was supposed to"},{"code":"683","lateReason":"This train has been delayed by this train not stopping in the correct position at a station","cancReason":"This train has been cancelled because of this train not stopping in the correct position at a station"},{"code":"684","lateReason":"This train has been delayed by this train's automatic braking system being activated","cancReason":"This train has been cancelled because of this train's automatic braking system being activated"},{"code":"685","lateReason":"This train has been delayed by overcrowding","cancReason":"This train has been cancelled because of overcrowding"},{"code":"686","lateReason":"This train has been delayed by overcrowding as this train has fewer coaches than normal","cancReason":"This train has been cancelled because of overcrowding as this train has fewer coaches than normal"},{"code":"687","lateReason":"This train has been delayed by overcrowding because an earlier train had fewer coaches than normal","cancReason":"This train has been cancelled because of overcrowding because an earlier train had fewer coaches than normal"},{"code":"688","lateReason":"This train has been delayed by overcrowding because of a concert","cancReason":"This train has been cancelled because of overcrowding because of a concert"},{"code":"689","lateReason":"This train has been delayed by overcrowding because of a football match","cancReason":"This train has been cancelled because of overcrowding because of a football match"},{"code":"690","lateReason":"This train has been delayed by overcrowding because of a marathon","cancReason":"This train has been cancelled because of overcrowding because of a marathon"},{"code":"691","lateReason":"This train has been delayed by overcrowding because of a rugby match","cancReason":"This train has been cancelled because of overcrowding because of a rugby match"},{"code":"692","lateReason":"This train has been delayed by overcrowding because of a sporting event","cancReason":"This train has been cancelled because of overcrowding because of a sporting event"},{"code":"693","lateReason":"This train has been delayed by overcrowding because of an earlier cancellation","cancReason":"This train has been cancelled because of overcrowding because of an earlier cancellation"},{"code":"694","lateReason":"This train has been delayed by overcrowding because of an event","cancReason":"This train has been cancelled because of overcrowding because of an event"},{"code":"695","lateReason":"This train has been delayed by overcrowding earlier on this train's journey","cancReason":"This train has been cancelled because of overcrowding earlier on this train's journey"},{"code":"696","lateReason":"This train has been delayed by animals on the railway","cancReason":"This train has been cancelled because of animals on the railway"},{"code":"697","lateReason":"This train has been delayed by cattle on the railway","cancReason":"This train has been cancelled because of cattle on the railway"},{"code":"698","lateReason":"This train has been delayed by horses on the railway","cancReason":"This train has been cancelled because of horses on the railway"},{"code":"699","lateReason":"This train has been delayed by sheep on the railway","cancReason":"This train has been cancelled because of sheep on the railway"},{"code":"700","lateReason":"This train has been delayed by animals on the railway earlier today","cancReason":"This train has been cancelled because of animals on the railway earlier today"},{"code":"701","lateReason":"This train has been delayed by cattle on the railway earlier today","cancReason":"This train has been cancelled because of cattle on the railway earlier today"},{"code":"702","lateReason":"This train has been delayed by horses on the railway earlier today","cancReason":"This train has been cancelled because of horses on the railway earlier today"},{"code":"703","lateReason":"This train has been delayed by sheep on the railway earlier today","cancReason":"This train has been cancelled because of sheep on the railway earlier today"},{"code":"704","lateReason":"This train has been delayed by passengers causing a disturbance on a train","cancReason":"This train has been cancelled because of passengers causing a disturbance on a train"},{"code":"705","lateReason":"This train has been delayed by passengers causing a disturbance on this train","cancReason":"This train has been cancelled because of passengers causing a disturbance on this train"},{"code":"706","lateReason":"This train has been delayed by passengers causing a disturbance earlier in this train's journey","cancReason":"This train has been cancelled because of passengers causing a disturbance earlier in this train's journey"},{"code":"707","lateReason":"This train has been delayed by passengers causing a disturbance on a train earlier today","cancReason":"This train has been cancelled because of passengers causing a disturbance on a train earlier today"},{"code":"708","lateReason":"This train has been delayed by a fault with the electric third rail earlier on this train's journey","cancReason":"This train has been cancelled because of a fault with the electric third rail earlier on this train's journey"},{"code":"709","lateReason":"This train has been delayed by a fault with the electric third rail earlier today","cancReason":"This train has been cancelled because of a fault with the electric third rail earlier today"},{"code":"710","lateReason":"This train has been delayed by damage to the electric third rail earlier on this train's journey","cancReason":"This train has been cancelled because of damage to the electric third rail earlier on this train's journey"},{"code":"711","lateReason":"This train has been delayed by damage to the electric third rail earlier today","cancReason":"This train has been cancelled because of damage to the electric third rail earlier today"},{"code":"712","lateReason":"This train has been delayed by failure of the electricity supply earlier on this train's journey","cancReason":"This train has been cancelled because of failure of the electricity supply earlier on this train's journey"},{"code":"713","lateReason":"This train has been delayed by failure of the electricity supply earlier today","cancReason":"This train has been cancelled because of failure of the electricity supply earlier today"},{"code":"714","lateReason":"This train has been delayed by the electricity being switched off for safety reasons earlier on this train's journey","cancReason":"This train has been cancelled because of the electricity being switched off for safety reasons earlier on this train's journey"},{"code":"715","lateReason":"This train has been delayed by the electricity being switched off for safety reasons earlier today","cancReason":"This train has been cancelled because of the electricity being switched off for safety reasons earlier today"},{"code":"716","lateReason":"This train has been delayed by urgent repairs to a bridge earlier today","cancReason":"This train has been cancelled because of urgent repairs to a bridge earlier today"},{"code":"717","lateReason":"This train has been delayed by urgent repairs to a tunnel earlier today","cancReason":"This train has been cancelled because of urgent repairs to a tunnel earlier today"},{"code":"718","lateReason":"This train has been delayed by urgent repairs to the railway earlier today","cancReason":"This train has been cancelled because of urgent repairs to the railway earlier today"},{"code":"719","lateReason":"This train has been delayed by urgent repairs to the track earlier today","cancReason":"This train has been cancelled because of urgent repairs to the track earlier today"},{"code":"720","lateReason":"This train has been delayed by expected industrial action earlier today","cancReason":"This train has been cancelled because of expected industrial action earlier today"},{"code":"721","lateReason":"This train has been delayed by expected industrial action yesterday","cancReason":"This train has been cancelled because of expected industrial action yesterday"},{"code":"722","lateReason":"This train has been delayed by industrial action earlier today","cancReason":"This train has been cancelled because of industrial action earlier today"},{"code":"723","lateReason":"This train has been delayed by industrial action yesterday","cancReason":"This train has been cancelled because of industrial action yesterday"},{"code":"724","lateReason":"This train has been delayed by an object being caught on the overhead electric wires earlier on this train's journey","cancReason":"This train has been cancelled because of an object being caught on the overhead electric wires earlier on this train's journey"},{"code":"725","lateReason":"This train has been delayed by an object being caught on the overhead electric wires earlier today","cancReason":"This train has been cancelled because of an object being caught on the overhead electric wires earlier today"},{"code":"726","lateReason":"This train has been delayed by damage to the overhead electric wires earlier on this train's journey","cancReason":"This train has been cancelled because of damage to the overhead electric wires earlier on this train's journey"},{"code":"727","lateReason":"This train has been delayed by damage to the overhead electric wires earlier today","cancReason":"This train has been cancelled because of damage to the overhead electric wires earlier today"},{"code":"728","lateReason":"This train has been delayed by earlier engineering works not being finished on time","cancReason":"This train has been cancelled because of earlier engineering works not being finished on time"},{"code":"729","lateReason":"This train has been delayed by a fault with the on train signalling system earlier on this train's journey","cancReason":"This train has been cancelled because of a fault with the on train signalling system earlier on this train's journey"},{"code":"730","lateReason":"This train has been delayed by a fault with the on train signalling system earlier today","cancReason":"This train has been cancelled because of a fault with the on train signalling system earlier today"},{"code":"733","lateReason":"This train has been delayed by a fault with the signalling system earlier on this train's journey","cancReason":"This train has been cancelled because of a fault with the signalling system earlier on this train's journey"},{"code":"734","lateReason":"This train has been delayed by a fault with the signalling system earlier today","cancReason":"This train has been cancelled because of a fault with the signalling system earlier today"},{"code":"737","lateReason":"This train has been delayed by the fire alarm sounding in a signalbox earlier on this train's journey","cancReason":"This train has been cancelled because of the fire alarm sounding in a signalbox earlier on this train's journey"},{"code":"738","lateReason":"This train has been delayed by the fire alarm sounding in a signalbox earlier today","cancReason":"This train has been cancelled because of the fire alarm sounding in a signalbox earlier today"},{"code":"739","lateReason":"This train has been delayed by the fire alarm sounding in the signalling centre earlier on this train's journey","cancReason":"This train has been cancelled because of the fire alarm sounding in the signalling centre earlier on this train's journey"},{"code":"740","lateReason":"This train has been delayed by the fire alarm sounding in the signalling centre earlier today","cancReason":"This train has been cancelled because of the fire alarm sounding in the signalling centre earlier today"},{"code":"741","lateReason":"This train has been delayed by attempted theft of overhead line electrification equipment earlier today","cancReason":"This train has been cancelled because of attempted theft of overhead line electrification equipment earlier today"},{"code":"742","lateReason":"This train has been delayed by attempted theft of overhead line electrification equipment yesterday","cancReason":"This train has been cancelled because of attempted theft of overhead line electrification equipment yesterday"},{"code":"743","lateReason":"This train has been delayed by attempted theft of railway equipment earlier today","cancReason":"This train has been cancelled because of attempted theft of railway equipment earlier today"},{"code":"744","lateReason":"This train has been delayed by attempted theft of railway equipment yesterday","cancReason":"This train has been cancelled because of attempted theft of railway equipment yesterday"},{"code":"745","lateReason":"This train has been delayed by attempted theft of signalling cables earlier today","cancReason":"This train has been cancelled because of attempted theft of signalling cables earlier today"},{"code":"746","lateReason":"This train has been delayed by attempted theft of signalling cables yesterday","cancReason":"This train has been cancelled because of attempted theft of signalling cables yesterday"},{"code":"747","lateReason":"This train has been delayed by attempted theft of third rail electrification equipment earlier today","cancReason":"This train has been cancelled because of attempted theft of third rail electrification equipment earlier today"},{"code":"748","lateReason":"This train has been delayed by attempted theft of third rail electrification equipment yesterday","cancReason":"This train has been cancelled because of attempted theft of third rail electrification equipment yesterday"},{"code":"749","lateReason":"This train has been delayed by theft of overhead line electrification equipment earlier today","cancReason":"This train has been cancelled because of theft of overhead line electrification equipment earlier today"},{"code":"750","lateReason":"This train has been delayed by theft of overhead line electrification equipment yesterday","cancReason":"This train has been cancelled because of theft of overhead line electrification equipment yesterday"},{"code":"751","lateReason":"This train has been delayed by theft of railway equipment earlier today","cancReason":"This train has been cancelled because of theft of railway equipment earlier today"},{"code":"752","lateReason":"This train has been delayed by theft of railway equipment yesterday","cancReason":"This train has been cancelled because of theft of railway equipment yesterday"},{"code":"753","lateReason":"This train has been delayed by theft of signalling cables earlier today","cancReason":"This train has been cancelled because of theft of signalling cables earlier today"},{"code":"754","lateReason":"This train has been delayed by theft of signalling cables yesterday","cancReason":"This train has been cancelled because of theft of signalling cables yesterday"},{"code":"755","lateReason":"This train has been delayed by theft of third rail electrification equipment earlier today","cancReason":"This train has been cancelled because of theft of third rail electrification equipment earlier today"},{"code":"756","lateReason":"This train has been delayed by theft of third rail electrification equipment yesterday","cancReason":"This train has been cancelled because of theft of third rail electrification equipment yesterday"},{"code":"757","lateReason":"This train has been delayed by vandalism at a station earlier today","cancReason":"This train has been cancelled because of vandalism at a station earlier today"},{"code":"758","lateReason":"This train has been delayed by vandalism at a station yesterday","cancReason":"This train has been cancelled because of vandalism at a station yesterday"},{"code":"759","lateReason":"This train has been delayed by vandalism of railway equipment earlier today","cancReason":"This train has been cancelled because of vandalism of railway equipment earlier today"},{"code":"760","lateReason":"This train has been delayed by vandalism of railway equipment yesterday","cancReason":"This train has been cancelled because of vandalism of railway equipment yesterday"},{"code":"761","lateReason":"This train has been delayed by vandalism on a train earlier today","cancReason":"This train has been cancelled because of vandalism on a train earlier today"},{"code":"762","lateReason":"This train has been delayed by vandalism on a train yesterday","cancReason":"This train has been cancelled because of vandalism on a train yesterday"},{"code":"763","lateReason":"This train has been delayed by vandalism on this train earlier today","cancReason":"This train has been cancelled because of vandalism on this train earlier today"},{"code":"764","lateReason":"This train has been delayed by vandalism on this train yesterday","cancReason":"This train has been cancelled because of vandalism on this train yesterday"},{"code":"765","lateReason":"This train has been delayed by a fault with the electric third rail","cancReason":"This train has been cancelled because of a fault with the electric third rail"},{"code":"766","lateReason":"This train has been delayed by damage to the electric third rail","cancReason":"This train has been cancelled because of damage to the electric third rail"},{"code":"767","lateReason":"This train has been delayed by failure of the electricity supply","cancReason":"This train has been cancelled because of failure of the electricity supply"},{"code":"768","lateReason":"This train has been delayed by the electricity being switched off for safety reasons","cancReason":"This train has been cancelled because of the electricity being switched off for safety reasons"},{"code":"769","lateReason":"This train has been delayed by urgent repairs to a bridge","cancReason":"This train has been cancelled because of urgent repairs to a bridge"},{"code":"770","lateReason":"This train has been delayed by urgent repairs to a tunnel","cancReason":"This train has been cancelled because of urgent repairs to a tunnel"},{"code":"771","lateReason":"This train has been delayed by urgent repairs to the railway","cancReason":"This train has been cancelled because of urgent repairs to the railway"},{"code":"772","lateReason":"This train has been delayed by urgent repairs to the track","cancReason":"This train has been cancelled because of urgent repairs to the track"},{"code":"773","lateReason":"This train has been delayed by the emergency services dealing with an incident earlier today","cancReason":"This train has been cancelled because of the emergency services dealing with an incident earlier today"},{"code":"774","lateReason":"This train has been delayed by ambulance service dealing with an incident","cancReason":"This train has been cancelled because of ambulance service dealing with an incident"},{"code":"775","lateReason":"This train has been delayed by fire brigade dealing with an incident","cancReason":"This train has been cancelled because of fire brigade dealing with an incident"},{"code":"776","lateReason":"This train has been delayed by police dealing with an incident","cancReason":"This train has been cancelled because of police dealing with an incident"},{"code":"777","lateReason":"This train has been delayed by the emergency services dealing with an incident","cancReason":"This train has been cancelled because of the emergency services dealing with an incident"},{"code":"778","lateReason":"This train has been delayed by the fire alarm sounding at a station","cancReason":"This train has been cancelled because of the fire alarm sounding at a station"},{"code":"779","lateReason":"This train has been delayed by the fire alarm sounding at a station earlier today","cancReason":"This train has been cancelled because of the fire alarm sounding at a station earlier today"},{"code":"780","lateReason":"This train has been delayed by a burst water main flooding the railway","cancReason":"This train has been cancelled because of a burst water main flooding the railway"},{"code":"781","lateReason":"This train has been delayed by a river flooding the railway","cancReason":"This train has been cancelled because of a river flooding the railway"},{"code":"782","lateReason":"This train has been delayed by flood water making the railway potentially unsafe","cancReason":"This train has been cancelled because of flood water making the railway potentially unsafe"},{"code":"783","lateReason":"This train has been delayed by flooding","cancReason":"This train has been cancelled because of flooding"},{"code":"784","lateReason":"This train has been delayed by heavy rain flooding the railway","cancReason":"This train has been cancelled because of heavy rain flooding the railway"},{"code":"785","lateReason":"This train has been delayed by predicted flooding","cancReason":"This train has been cancelled because of predicted flooding"},{"code":"786","lateReason":"This train has been delayed by the sea flooding the railway","cancReason":"This train has been cancelled because of the sea flooding the railway"},{"code":"787","lateReason":"This train has been delayed by a burst water main flooding the railway earlier today","cancReason":"This train has been cancelled because of a burst water main flooding the railway earlier today"},{"code":"788","lateReason":"This train has been delayed by a river flooding the railway earlier today","cancReason":"This train has been cancelled because of a river flooding the railway earlier today"},{"code":"789","lateReason":"This train has been delayed by flood water making the railway potentially unsafe earlier today","cancReason":"This train has been cancelled because of flood water making the railway potentially unsafe earlier today"},{"code":"790","lateReason":"This train has been delayed by flooding earlier in this train's journey","cancReason":"This train has been cancelled because of flooding earlier in this train's journey"},{"code":"791","lateReason":"This train has been delayed by flooding earlier today","cancReason":"This train has been cancelled because of flooding earlier today"},{"code":"792","lateReason":"This train has been delayed by heavy rain flooding the railway earlier today","cancReason":"This train has been cancelled because of heavy rain flooding the railway earlier today"},{"code":"793","lateReason":"This train has been delayed by predicted flooding earlier today","cancReason":"This train has been cancelled because of predicted flooding earlier today"},{"code":"794","lateReason":"This train has been delayed by the sea flooding the railway earlier today","cancReason":"This train has been cancelled because of the sea flooding the railway earlier today"},{"code":"795","lateReason":"This train has been delayed by thick fog","cancReason":"This train has been cancelled because of thick fog"},{"code":"796","lateReason":"This train has been delayed by thick fog earlier in this train's journey","cancReason":"This train has been cancelled because of thick fog earlier in this train's journey"},{"code":"797","lateReason":"This train has been delayed by thick fog earlier today","cancReason":"This train has been cancelled because of thick fog earlier today"},{"code":"798","lateReason":"This train has been delayed by forecasted high winds","cancReason":"This train has been cancelled because of forecasted high winds"},{"code":"799","lateReason":"This train has been delayed by high winds","cancReason":"This train has been cancelled because of high winds"},{"code":"800","lateReason":"This train has been delayed by high winds earlier in this train's journey","cancReason":"This train has been cancelled because of high winds earlier in this train's journey"},{"code":"801","lateReason":"This train has been delayed by high winds earlier today","cancReason":"This train has been cancelled because of high winds earlier today"},{"code":"802","lateReason":"This train has been delayed by expected industrial action","cancReason":"This train has been cancelled because of expected industrial action"},{"code":"803","lateReason":"This train has been delayed by industrial action","cancReason":"This train has been cancelled because of industrial action"},{"code":"804","lateReason":"This train has been delayed by lightning damaging a station","cancReason":"This train has been cancelled because of lightning damaging a station"},{"code":"805","lateReason":"This train has been delayed by lightning damaging a train","cancReason":"This train has been cancelled because of lightning damaging a train"},{"code":"806","lateReason":"This train has been delayed by lightning damaging equipment","cancReason":"This train has been cancelled because of lightning damaging equipment"},{"code":"807","lateReason":"This train has been delayed by lightning damaging the electricity supply","cancReason":"This train has been cancelled because of lightning damaging the electricity supply"},{"code":"808","lateReason":"This train has been delayed by lightning damaging the signalling system","cancReason":"This train has been cancelled because of lightning damaging the signalling system"},{"code":"809","lateReason":"This train has been delayed by lightning damaging this train","cancReason":"This train has been cancelled because of lightning damaging this train"},{"code":"810","lateReason":"This train has been delayed by an object being caught on the overhead electric wires","cancReason":"This train has been cancelled because of an object being caught on the overhead electric wires"},{"code":"811","lateReason":"This train has been delayed by damage to the overhead electric wires","cancReason":"This train has been cancelled because of damage to the overhead electric wires"},{"code":"812","lateReason":"This train has been delayed by engineering works not being finished on time","cancReason":"This train has been cancelled because of engineering works not being finished on time"},{"code":"813","lateReason":"This train has been delayed by forecasted slippery rails","cancReason":"This train has been cancelled because of forecasted slippery rails"},{"code":"814","lateReason":"This train has been delayed by ice preventing this train getting electricity from the third rail","cancReason":"This train has been cancelled because of ice preventing this train getting electricity from the third rail"},{"code":"815","lateReason":"This train has been delayed by ice preventing trains getting electricity from the third rail","cancReason":"This train has been cancelled because of ice preventing trains getting electricity from the third rail"},{"code":"816","lateReason":"This train has been delayed by slippery rails","cancReason":"This train has been cancelled because of slippery rails"},{"code":"817","lateReason":"This train has been delayed by slippery rails earlier in this train's journey","cancReason":"This train has been cancelled because of slippery rails earlier in this train's journey"},{"code":"818","lateReason":"This train has been delayed by slippery rails earlier today","cancReason":"This train has been cancelled because of slippery rails earlier today"},{"code":"819","lateReason":"This train has been delayed by forecasted severe weather","cancReason":"This train has been cancelled because of forecasted severe weather"},{"code":"820","lateReason":"This train has been delayed by severe weather","cancReason":"This train has been cancelled because of severe weather"},{"code":"821","lateReason":"This train has been delayed by severe weather earlier","cancReason":"This train has been cancelled because of severe weather earlier"},{"code":"822","lateReason":"This train has been delayed by severe weather earlier in this train's journey","cancReason":"This train has been cancelled because of severe weather earlier in this train's journey"},{"code":"823","lateReason":"This train has been delayed by severe weather earlier today","cancReason":"This train has been cancelled because of severe weather earlier today"},{"code":"824","lateReason":"This train has been delayed by a safety inspection of the track","cancReason":"This train has been cancelled because of a safety inspection of the track"},{"code":"825","lateReason":"This train has been delayed by a safety inspection on a train","cancReason":"This train has been cancelled because of a safety inspection on a train"},{"code":"826","lateReason":"This train has been delayed by a safety inspection on this train","cancReason":"This train has been cancelled because of a safety inspection on this train"},{"code":"827","lateReason":"This train has been delayed by a safety inspection of the track earlier today","cancReason":"This train has been cancelled because of a safety inspection of the track earlier today"},{"code":"828","lateReason":"This train has been delayed by a safety inspection on a train earlier today","cancReason":"This train has been cancelled because of a safety inspection on a train earlier today"},{"code":"829","lateReason":"This train has been delayed by a safety inspection on this train earlier in its journey","cancReason":"This train has been cancelled because of a safety inspection on this train earlier in its journey"},{"code":"830","lateReason":"This train has been delayed by a fault with the on train signalling system","cancReason":"This train has been cancelled because of a fault with the on train signalling system"},{"code":"831","lateReason":"This train has been delayed by a fault with the radio system between the driver and the signaller","cancReason":"This train has been cancelled because of a fault with the radio system between the driver and the signaller"},{"code":"832","lateReason":"This train has been delayed by a fault with the signalling system","cancReason":"This train has been cancelled because of a fault with the signalling system"},{"code":"834","lateReason":"This train has been delayed by the fire alarm sounding in a signalbox","cancReason":"This train has been cancelled because of the fire alarm sounding in a signalbox"},{"code":"835","lateReason":"This train has been delayed by the fire alarm sounding in the signalling centre","cancReason":"This train has been cancelled because of the fire alarm sounding in the signalling centre"},{"code":"836","lateReason":"This train has been delayed by forecasted heavy snow","cancReason":"This train has been cancelled because of forecasted heavy snow"},{"code":"837","lateReason":"This train has been delayed by heavy snow","cancReason":"This train has been cancelled because of heavy snow"},{"code":"838","lateReason":"This train has been delayed by heavy snow earlier in this train's journey","cancReason":"This train has been cancelled because of heavy snow earlier in this train's journey"},{"code":"839","lateReason":"This train has been delayed by heavy snow earlier today","cancReason":"This train has been cancelled because of heavy snow earlier today"},{"code":"840","lateReason":"This train has been delayed by heavy snow over recent days","cancReason":"This train has been cancelled because of heavy snow over recent days"},{"code":"841","lateReason":"This train has been delayed by a speed restriction","cancReason":"This train has been cancelled because of a speed restriction"},{"code":"842","lateReason":"This train has been delayed by a speed restriction because of fog","cancReason":"This train has been cancelled because of a speed restriction because of fog"},{"code":"843","lateReason":"This train has been delayed by a speed restriction because of fog earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction because of fog earlier on this train's journey"},{"code":"844","lateReason":"This train has been delayed by a speed restriction because of fog earlier today","cancReason":"This train has been cancelled because of a speed restriction because of fog earlier today"},{"code":"845","lateReason":"This train has been delayed by a speed restriction because of heavy rain","cancReason":"This train has been cancelled because of a speed restriction because of heavy rain"},{"code":"846","lateReason":"This train has been delayed by a speed restriction because of heavy rain earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction because of heavy rain earlier on this train's journey"},{"code":"847","lateReason":"This train has been delayed by a speed restriction because of heavy rain earlier today","cancReason":"This train has been cancelled because of a speed restriction because of heavy rain earlier today"},{"code":"848","lateReason":"This train has been delayed by a speed restriction because of high track temperatures","cancReason":"This train has been cancelled because of a speed restriction because of high track temperatures"},{"code":"849","lateReason":"This train has been delayed by a speed restriction because of high track temperatures earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction because of high track temperatures earlier on this train's journey"},{"code":"850","lateReason":"This train has been delayed by a speed restriction because of high track temperatures earlier today","cancReason":"This train has been cancelled because of a speed restriction because of high track temperatures earlier today"},{"code":"851","lateReason":"This train has been delayed by a speed restriction because of high winds","cancReason":"This train has been cancelled because of a speed restriction because of high winds"},{"code":"852","lateReason":"This train has been delayed by a speed restriction because of high winds earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction because of high winds earlier on this train's journey"},{"code":"853","lateReason":"This train has been delayed by a speed restriction because of high winds earlier today","cancReason":"This train has been cancelled because of a speed restriction because of high winds earlier today"},{"code":"854","lateReason":"This train has been delayed by a speed restriction because of severe weather","cancReason":"This train has been cancelled because of a speed restriction because of severe weather"},{"code":"855","lateReason":"This train has been delayed by a speed restriction because of severe weather earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction because of severe weather earlier on this train's journey"},{"code":"856","lateReason":"This train has been delayed by a speed restriction because of severe weather earlier today","cancReason":"This train has been cancelled because of a speed restriction because of severe weather earlier today"},{"code":"857","lateReason":"This train has been delayed by a speed restriction because of snow and ice","cancReason":"This train has been cancelled because of a speed restriction because of snow and ice"},{"code":"858","lateReason":"This train has been delayed by a speed restriction because of snow and ice earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction because of snow and ice earlier on this train's journey"},{"code":"859","lateReason":"This train has been delayed by a speed restriction because of snow and ice earlier today","cancReason":"This train has been cancelled because of a speed restriction because of snow and ice earlier today"},{"code":"860","lateReason":"This train has been delayed by a speed restriction earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction earlier on this train's journey"},{"code":"861","lateReason":"This train has been delayed by a speed restriction earlier today","cancReason":"This train has been cancelled because of a speed restriction earlier today"},{"code":"862","lateReason":"This train has been delayed by a speed restriction in a tunnel","cancReason":"This train has been cancelled because of a speed restriction in a tunnel"},{"code":"863","lateReason":"This train has been delayed by a speed restriction in a tunnel earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction in a tunnel earlier on this train's journey"},{"code":"864","lateReason":"This train has been delayed by a speed restriction in a tunnel earlier today","cancReason":"This train has been cancelled because of a speed restriction in a tunnel earlier today"},{"code":"865","lateReason":"This train has been delayed by a speed restriction over a bridge","cancReason":"This train has been cancelled because of a speed restriction over a bridge"},{"code":"866","lateReason":"This train has been delayed by a speed restriction over a bridge earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction over a bridge earlier on this train's journey"},{"code":"867","lateReason":"This train has been delayed by a speed restriction over a bridge earlier today","cancReason":"This train has been cancelled because of a speed restriction over a bridge earlier today"},{"code":"868","lateReason":"This train has been delayed by a speed restriction over an embankment","cancReason":"This train has been cancelled because of a speed restriction over an embankment"},{"code":"869","lateReason":"This train has been delayed by a speed restriction over an embankment earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction over an embankment earlier on this train's journey"},{"code":"870","lateReason":"This train has been delayed by a speed restriction over an embankment earlier today","cancReason":"This train has been cancelled because of a speed restriction over an embankment earlier today"},{"code":"871","lateReason":"This train has been delayed by a speed restriction over defective track","cancReason":"This train has been cancelled because of a speed restriction over defective track"},{"code":"872","lateReason":"This train has been delayed by a speed restriction over defective track earlier on this train's journey","cancReason":"This train has been cancelled because of a speed restriction over defective track earlier on this train's journey"},{"code":"873","lateReason":"This train has been delayed by a speed restriction over defective track earlier today","cancReason":"This train has been cancelled because of a speed restriction over defective track earlier today"},{"code":"874","lateReason":"This train has been delayed by attempted theft of overhead line electrification equipment","cancReason":"This train has been cancelled because of attempted theft of overhead line electrification equipment"},{"code":"875","lateReason":"This train has been delayed by attempted theft of railway equipment","cancReason":"This train has been cancelled because of attempted theft of railway equipment"},{"code":"876","lateReason":"This train has been delayed by attempted theft of signalling cables","cancReason":"This train has been cancelled because of attempted theft of signalling cables"},{"code":"877","lateReason":"This train has been delayed by attempted theft of third rail electrification equipment","cancReason":"This train has been cancelled because of attempted theft of third rail electrification equipment"},{"code":"878","lateReason":"This train has been delayed by theft of overhead line electrification equipment","cancReason":"This train has been cancelled because of theft of overhead line electrification equipment"},{"code":"879","lateReason":"This train has been delayed by theft of railway equipment","cancReason":"This train has been cancelled because of theft of railway equipment"},{"code":"880","lateReason":"This train has been delayed by theft of signalling cables","cancReason":"This train has been cancelled because of theft of signalling cables"},{"code":"881","lateReason":"This train has been delayed by theft of third rail electrification equipment","cancReason":"This train has been cancelled because of theft of third rail electrification equipment"},{"code":"882","lateReason":"This train has been delayed by vandalism at a station","cancReason":"This train has been cancelled because of vandalism at a station"},{"code":"883","lateReason":"This train has been delayed by vandalism of railway equipment","cancReason":"This train has been cancelled because of vandalism of railway equipment"},{"code":"884","lateReason":"This train has been delayed by vandalism on a train","cancReason":"This train has been cancelled because of vandalism on a train"},{"code":"885","lateReason":"This train has been delayed by vandalism on this train","cancReason":"This train has been cancelled because of vandalism on this train"},{"code":"886","lateReason":"This train has been delayed by train crew being delayed","cancReason":"This train has been cancelled because of train crew being delayed"},{"code":"887","lateReason":"This train has been delayed by train crew being delayed by service disruption","cancReason":"This train has been cancelled because of train crew being delayed by service disruption"},{"code":"888","lateReason":"This train has been delayed by a bridge being damaged","cancReason":"This train has been cancelled because of a bridge being damaged"},{"code":"889","lateReason":"This train has been delayed by a bridge being damaged by a boat","cancReason":"This train has been cancelled because of a bridge being damaged by a boat"},{"code":"890","lateReason":"This train has been delayed by a bridge being damaged by a road vehicle","cancReason":"This train has been cancelled because of a bridge being damaged by a road vehicle"},{"code":"891","lateReason":"This train has been delayed by a bridge having collapsed","cancReason":"This train has been cancelled because of a bridge having collapsed"},{"code":"892","lateReason":"This train has been delayed by a broken rail","cancReason":"This train has been cancelled because of a broken rail"},{"code":"893","lateReason":"This train has been delayed by a late departure while the train was cleaned specially","cancReason":"This train has been cancelled because of a late departure while the train was cleaned specially"},{"code":"894","lateReason":"This train has been delayed by a late running freight train","cancReason":"This train has been cancelled because of a late running freight train"},{"code":"895","lateReason":"This train has been delayed by a late running train being in front of this one","cancReason":"This train has been cancelled because of a late running train being in front of this one"},{"code":"896","lateReason":"This train has been delayed by a points failure","cancReason":"This train has been cancelled because of a points failure"},{"code":"897","lateReason":"This train has been delayed by a power cut at the station","cancReason":"This train has been cancelled because of a power cut at the station"},{"code":"898","lateReason":"This train has been delayed by a problem with the station lighting","cancReason":"This train has been cancelled because of a problem with the station lighting"},{"code":"899","lateReason":"This train has been delayed by a rail buckling in the heat","cancReason":"This train has been cancelled because of a rail buckling in the heat"},{"code":"900","lateReason":"This train has been delayed by a railway embankment being damaged","cancReason":"This train has been cancelled because of a railway embankment being damaged"},{"code":"901","lateReason":"This train has been delayed by a shortage of station staff","cancReason":"This train has been cancelled because of a shortage of station staff"},{"code":"902","lateReason":"This train has been delayed by a tunnel being closed for safety reasons","cancReason":"This train has been cancelled because of a tunnel being closed for safety reasons"},{"code":"903","lateReason":"This train has been delayed by an incident at the airport","cancReason":"This train has been cancelled because of an incident at the airport"},{"code":"904","lateReason":"This train has been delayed by congestion","cancReason":"This train has been cancelled because of congestion"},{"code":"905","lateReason":"This train has been delayed by the communication alarm being activated on a train","cancReason":"This train has been cancelled because of the communication alarm being activated on a train"},{"code":"906","lateReason":"This train has been delayed by the communication alarm being activated on this train","cancReason":"This train has been cancelled because of the communication alarm being activated on this train"},{"code":"907","lateReason":"This train has been delayed by the train departing late to maintain customer connections","cancReason":"This train has been cancelled because of the train departing late to maintain customer connections"},{"code":"908","lateReason":"This train has been delayed by the train making extra stops because a train was cancelled","cancReason":"This train has been cancelled because of the train making extra stops because a train was cancelled"},{"code":"909","lateReason":"This train has been delayed by the train making extra stops because of service disruption","cancReason":"This train has been cancelled because of the train making extra stops because of service disruption"},{"code":"910","lateReason":"This train has been delayed by waiting for a part of the train to be attached","cancReason":"This train has been cancelled because of waiting for a part of the train to be attached"},{"code":"911","lateReason":"This train has been delayed by a fault on a train","cancReason":"This train has been cancelled because of a fault on a train"},{"code":"912","lateReason":"This train has been delayed by a problem with platform equipment","cancReason":"This train has been cancelled because of a problem with platform equipment"},{"code":"913","lateReason":"This train has been delayed by a fault on a train earlier","cancReason":"This train has been cancelled because of a fault on a train earlier"},{"code":"914","lateReason":"This train has been delayed by issues with communication systems","cancReason":"This train has been cancelled because of issues with communication systems"},{"code":"915","lateReason":"This train has been delayed by a problem in the depot","cancReason":"This train has been cancelled because of a problem in the depot"},{"code":"916","lateReason":"This train has been delayed by signalling staff being unavailable","cancReason":"This train has been cancelled because of signalling staff being unavailable"},{"code":"917","lateReason":"This train has been delayed by staff training","cancReason":"This train has been cancelled because of staff training"},{"code":"918","lateReason":"This train has been delayed by a short-notice change to the timetable","cancReason":"This train has been cancelled because of a short-notice change to the timetable"},{"code":"919","lateReason":"This train has been delayed by misuse of a level crossing","cancReason":"This train has been cancelled because of misuse of a level crossing"},{"code":"920","lateReason":"This train has been delayed by a member of train crew being unavailable","cancReason":"This train has been cancelled because of a member of train crew being unavailable"},{"code":"921","lateReason":"This train has been delayed by a member of train crew being unavailable earlier","cancReason":"This train has been cancelled because of a member of train crew being unavailable earlier"}]}} diff --git a/src/main.py b/src/main.py index ddb7c7f..5ae7546 100644 --- a/src/main.py +++ b/src/main.py @@ -14,7 +14,7 @@ # program. If not, see # https://git.fjla.uk/OwlBoard/db-manager/src/branch/main/LICENSE -version = "2023.6.10" +version = "2023.6.11" print(f"main.py: Initialising db-manager v{version}") #Third Party Imports @@ -26,7 +26,7 @@ import logger as log log.out(f"main.py: db-manager {version} Initialised on host {os.uname()[1]}", "INFO") #Local Imports -import corpus, mongo, pis, mailer, timetable +import corpus, mongo, pis, mailer, timetable, reasonCodes # Ensure count document exists in meta, wrap in while look to prevent crashing if the DB is not ready: # Does this work when the DB is not initialised? @@ -44,6 +44,9 @@ status = corpus.runUpdate() ## Run PIS Update pis.runUpdate() +## Run reasonCodes update +reasonCodes.runUpdate() + ## Run Timetable Update timetable.runUpdate() diff --git a/src/mongo.py b/src/mongo.py index 7dd059e..648be32 100644 --- a/src/mongo.py +++ b/src/mongo.py @@ -111,7 +111,6 @@ def getMetaHash(target): if type(res) is dict: if 'updated' in res: try: - log.out(f'mongo.metaGetHash: {target} hash is {res["hash"]}', 'INFO') return res["hash"] except: return None diff --git a/src/pis.py b/src/pis.py index 977c454..50d8dc3 100644 --- a/src/pis.py +++ b/src/pis.py @@ -6,7 +6,7 @@ REBUILD :bool = False # Set to True to force rebuild log.out("pis.py: PIS Module Loaded", "DBUG") file_location :str = "/app/data/pis/gwr.yaml" # Production & Testing -#file_location :str = "/home/fred.boniface/git/owlboard/db-manager/data/pis/gwr.yaml" # Local Development +file_location :str = "/home/fred.boniface/git/owlboard/db-manager/data/pis/gwr.yaml" # Local Development def runUpdate(): if (not requiresUpdate()): diff --git a/src/reasonCodes.py b/src/reasonCodes.py new file mode 100644 index 0000000..e996327 --- /dev/null +++ b/src/reasonCodes.py @@ -0,0 +1,46 @@ +import json, hashlib +import mongo +import logger as log + +REBUILD = False + +log.out("reasonCodes.py: reasonCodes module initialised", "DBUG") + +file_location :str = "/app/data/reasonCodes/reasoncodes.json" # Production & Testing +file_location :str = "/home/fred.boniface/git/owlboard/db-manager/data/reasonCodes/reasoncodes.json" # Local Development + +def runUpdate(): + if (not requiresUpdate()): + log.out('reasonCodes.runUpdate: Reason codes do not need updating', 'INFO') + return + log.out(f"reasonCodes.runUpdate: Update required", "INFO") + reason_code_data = load() + reason_code_indexes = ["code"] + mongo.dropCollection("reasonCodes") + mongo.putMany("reasonCodes", reason_code_data, reason_code_indexes) + +def requiresUpdate(): + if REBUILD: + return True + current_hash = mongo.getMetaHash("reasonCodes") + with open(file_location, "r") as f: + text = f.read() + newHash = hashlib.md5(text.encode()).hexdigest() + log.out(f"reasonCodes.requiresUpdate: Database Hash: {current_hash}","INFO") + log.out(f"reasonCodes.requiresUpdate: File hash: {newHash}", "INFO") + if current_hash is None or newHash != current_hash: + log.out("reasonCodes.requiredUpdate: reasonCodes require updating", "INFO") + mongo.putMetaHash("reasonCodes", newHash) + return True + log.out("reasonCodes.requiredUpdate: reasonCodes are up to date", "INFO") + return False + +def load(): + with open(file_location, "r") as data: + try: + json_data = data.read() + reason_code = json.loads(json_data) + return reason_code['GetReasonCodeListResult']['reason'] + except Exception as exc: + log.out(f"reasonCodes.load: {exc}", "EROR") + return exc \ No newline at end of file