
to view a press release issued on behalf of the East Yorkshire PCT and Yorkshire Wolds & Coast PCT , which concerns their last ever AGM and annual report . the East Yorkshire PCT and the Yorkshire Wolds & Coast PCT are merging together , and from the 1st October 2006 they will collectively be known as the East Riding of Yorkshire PCT . 31 st August 2006 Give YOUR views on Local Mental Health Services Humber Mental Health Teaching NHS Trust and the East Riding of Yorkshire Council provide an integrated service to adults with mental health problems . They need your views and ideas to enable them to further develop this service . Your responses will help shape local community mental health services over the next 3 years . Please complete this questionnaire about services in the East Riding for people of working age with mental health problems . downlo ad here Return it via FREEPOST to the address given on the front of the questionnaire - they can receive your comments until the end of September 2006 . For help completing the questionnaire , more information or to request a copy of the questionanire in a different format , please telephone : 01482 389 110 30 th August 2006 Free Chlamydia Testing for Under 25 's Reminder that pharmacists in Hull offer free chlamydia testing for young adults aged under 25 years Both men and women can pick up kits from independent pharmacies in the city , then send a urine sample for free testing . Results can be posted or sent via e-mail or text . The Chlamydia Awareness Screening Programme Hull & East Riding ( CASPHER ) launched this service almost 2 years ago . For more information contact CASPHER on 01482 336336 or via Conifer House 4 th July 2006 Disability Equality Scheme - Consultation Process Hull & East Yorkshire Hospitals NHS Trust is about to start drafting a Disability Equality Scheme and would like your help . What is a Disability Equality Scheme ? In 2005 the Disability Discrimination Act ( DDA ) came into force and included a disability equality duty for the public sector . This new duty will accelerate the pace of change on disability equality aiming to end the discrimination which can currently occur when institutions fail to take into account the impact upon disabled people when developing services . The scheme must lead to real outcomes and practical improvements in the day to day life and experience of disabled people . What should a Disability Equality Scheme include ? The essential elements which the scheme must include are : How disabled people have been involved in developing the scheme . The action plan . Arrangements for gathering information about performance of Trust on disability equality . Arrangements for assessing the impact of the activities of the trust on disability equality and improving these when necessary . Details of how the Trust is going to use the information gathered , in particular in reviewing the effectiveness of its action plan and preparing subsequent schemes How to get involved We would like to invite you to get involved ; in particular we would like to hear from disabled people , carers and voluntary and community organisations which represent the interests of disabled people . The consultation process will start in July and the scheme will be published , together with a 3 year delivery plan , in December 2006 . To get involved in this process please contact our PALS office on 01482 623 065 quoting ' Disability Equality Consultation ' and leave your name and number , alternatively contact Kirsty Edmondson-Jones -- Clinical Effectiveness Manager via email 