Abstract The paper presents a methodology for partitioning a given region in geographical areas in such a way as to insure an optimal allocation of the available health services. Two steps compose the proposed approach. In the first step, via mathematical programming one determines optimal hospital districts by taking into account demand and capacity, measured in number of hospital-beds. In the second step, one determines health-districts by aggregating together hospital districts, by taking into account lower and upper bounds for the population in each district and the existence of districts with a different nature (political, educational, etc.). A case study is presented for the Italian province of Cosenza. Although developed within the context of health-care services, the approach is general enough to be applicable also to the partition in a given region of other social services, i.e. school districts.