Пример #1
0
#loads the classify_adm3_names dictionary, used to classify the admin 3 boundaries
from adm3_name_dict import classify_adm3_names

print classify_service_types

dataReader = csv.reader(open(csv_filepathname), delimiter=',', quotechar='"')
 
#The objects can't have the same name as the class, and a new object needs to be created each time a row is looped through

for row in dataReader:

	#print 'hi'
		
	if row[0] != 'id': # Ignore the header row, import everything else
		
		EffortInstanceObj = EffortInstance()
		
		EffortInstanceObj.effort_instance_id = row[0]
		
		if row[1] == 'Long-term':
			EffortInstanceObj.date_start = '9999-12-31'
			#print 'hey'
		else:
			#need to parse and re-enter the date format as year-month-day for django to like it'
			 
			split = re.split(r'\/', row[1].strip())
			
			print split[2] + '-' + split[0] + '-' + split[1]
			
			EffortInstanceObj.date_start = split[2] + '-' + split[0] + '-' + split[1]
		
Пример #2
0
hacServiceCols = [
    4, 5, 7, 8, 9, 10, 11, 13, 14, 17, 20, 21, 22, 23, 24, 25, 26, 27, 30, 34
]


def upfirstletter(value):
    first = value[0] if len(value) > 0 else ''
    remaining = value[1:] if len(value) > 1 else ''
    return first.upper() + remaining


for row in dataReader:

    if row[0] != 'id':  # Ignore the header row, import everything else

        EffortInstanceObj = EffortInstance()

        EffortInstanceObj.effort_instance_id = row[0]

        if row[33] == 'Hopital' or row[33] == 'CSL' or row[33] == 'CAL':
            #EffortInstanceObj.date_start = '9999-12-31'
            print 'long-term recorded'

        if row[33] == 'Hopital':
            EffortInstanceObj.provider_type = 'HL'
            #print 'hospital recorded'

        elif row[33] == 'CSL' or row[33] == 'CAL':
            EffortInstanceObj.provider_type = 'CL'
            #print 'clinic recorded'
def FillTables(locationOrder,adm2Bool,adm3Bool):

	if row[0] != 'id': # Ignore the header row, import everything else
	
		#checks to see if sector category is health
		if re.search('Health',row[12]):
		
			print 'row: id:'
			print row[0]
			
			EffortInstanceObj = EffortInstance()
		
			EffortInstanceObj.effort_instance_id = row[0]
			
			if locationOrder == 2:
			
				EffortInstanceObj.effort_instance_id = row[0] + '02'
			
			if locationOrder == 3:
			
				EffortInstanceObj.effort_instance_id = row[0] + '03'
		

			split = re.split(r'\/', row[9].strip())
		
			print split[2] + '-' + split[0] + '-' + split[1]
		
			EffortInstanceObj.date_start = split[2] + '-' + split[0] + '-' + split[1]
		
		
			split = re.split(r'\/', row[10].strip())
		
			print split[2] + '-' + split[0] + '-' + split[1]
		
			EffortInstanceObj.date_end = split[2] + '-' + split[0] + '-' + split[1]
		
		
			#cool way to make Service Providers unique, if obj does not exist then it creates it.
			#https://docs.djangoproject.com/en/1.6/ref/models/querysets/#get-or-create
			ServiceProviderObj, created = ServiceProvider.objects.get_or_create(provider_name = row[1])
		
			EffortInstanceObj.service_provider = ServiceProvider.objects.get(provider_name=row[1])
			
			EffortInstanceObj.updated_on = utc_datetime
		
			EffortInstanceObj.updated_by = 'Haiti Aid Map scrape'
		
			#HaitiAipMap does not have any lat lon coords, so don't add a location point
			#Also, don't use random lat lon. It will break spatial queries
			
			#loc = Location()
			#loc.latitude = str(random.randint(0,10))
			#loc.longitude = str(random.randint(0,10))
			#loc.save()
		
			'''
			Insert new code here to match admin boundaries: The location_information column is in column 21 (row [20]). This contains a list
			of admin boundaries where the facility is located at. The list contains entries delimited with '>'. The first entry on the list is Haiti. 
			The second entry is an admin 2 boundary. The third entry is ?.
			
			There can be more than one place listed in the location column. If this is the case then we need to create a new effort instance
			for each location in Haiti.
			'''
		
			if row[20]:
			
				split_each_location = re.split(r'\|Haiti>', row[20].strip())
				
	
				if len(split_each_location) > 1:
					split_loc = re.split(r'>', split_each_location[locationOrder].strip())
			
					if len(split_loc) > 1:

						UpperAdmin1 = split_loc[0].upper()
					
						UpperAdmin1 = re.split(r'\|', UpperAdmin1)
						
						print 'length of split_loc:'
						
						print len(split_loc)
		
						print 'UpperAdmin1:'
						
						print UpperAdmin1[0]
					
						EffortInstanceObj.adm_1 = haiti_adm1_minustah.objects.get(adm1=classify_adm1_names[UpperAdmin1[0]])
					
						if len(split_loc) > 1:
					
							UpperAdmin2 = split_loc[1].upper()
						
							UpperAdmin2 = re.split(r'\|', UpperAdmin2)
							
							print 'UpperAdmin2:'
						
							print UpperAdmin2[0]
						
							try:
			
								EffortInstanceObj.adm_2 = haiti_adm2_minustah.objects.get(adm2=classify_adm2_names[UpperAdmin2[0]])
				
							except:
			
								print "guess no match"
							
							
							if len(split_loc) > 2:
					
								UpperAdmin3 = split_loc[2].upper()
						
								UpperAdmin3 = re.split(r'\|', UpperAdmin3)
								
								print 'UpperAdmin3:'
						
								print UpperAdmin3[0]
	
						
								try:
			
									EffortInstanceObj.adm_3 = haiti_adm3_minustah.objects.get(adm3=classify_adm3_names[UpperAdmin3[0]])
				
								except:
			
									print "guess no match"
								

	
			#need a way first in seeing if a location exists close by
			#EffortInstanceObj.location = loc.objects.get
			EffortInstanceObj.save()
			
			
			
			if len(split_each_location) > 1:
				print 'location 1:'
				print split_each_location[1]
				
			if len(split_each_location) > 2 and adm2Bool == False:
				print 'location 2:'
				print split_each_location[2]
				FillTables(2,True,False)
				
			if len(split_each_location) > 3 and adm3Bool == False and adm2Bool == True:
				print 'location 3:'
				print split_each_location[3]
				FillTables(3,True,True)
Пример #4
0
hacHeaders = ["id","title","address ","arv","cardiovascular","dental","department ","diabetes","emergency","free_obstetric_care_program","general_consultation","hypertension","institution_code","intensive_care","laboratory","latitude ","longitude","malaria","number_of_adult_beds","number_of_pediatric_beds","obgyn","operating_room","orl ","palliative_care","pediatrics","pharmacy","physical_therapy","psychology_service","section","status","surgery","telephone","town ","type","vaccination"]

# TODO: Need to add column 3 to this below list, but don't know what "arv" means and its not yet in dictionary
hacServiceCols = [4,5,7,8,9,10,11,13,14,17,20,21,22,23,24,25,26,27,30,34];

def upfirstletter(value):
    first = value[0] if len(value) > 0 else ''
    remaining = value[1:] if len(value) > 1 else ''
    return first.upper() + remaining
	
for row in dataReader:
	
	if row[0] != 'id': # Ignore the header row, import everything else
		
		EffortInstanceObj = EffortInstance()
		
		EffortInstanceObj.effort_instance_id = row[0]
		
		if row[33] == 'Hopital' or row[33] == 'CSL' or row[33] == 'CAL':
			#EffortInstanceObj.date_start = '9999-12-31'
			print 'long-term recorded'
			
		if row[33] == 'Hopital':
			EffortInstanceObj.provider_type = 'HL'
			#print 'hospital recorded'
			
		elif row[33] == 'CSL' or row[33] == 'CAL':
			EffortInstanceObj.provider_type = 'CL'
			#print 'clinic recorded'
		
Пример #5
0
def FillTables(locationOrder, adm2Bool, adm3Bool):

    if row[0] != 'id':  # Ignore the header row, import everything else

        #checks to see if sector category is health
        if re.search('Health', row[12]):

            print 'row: id:'
            print row[0]

            EffortInstanceObj = EffortInstance()

            EffortInstanceObj.effort_instance_id = row[0]

            if locationOrder == 2:

                EffortInstanceObj.effort_instance_id = row[0] + '02'

            if locationOrder == 3:

                EffortInstanceObj.effort_instance_id = row[0] + '03'

            split = re.split(r'\/', row[9].strip())

            print split[2] + '-' + split[0] + '-' + split[1]

            EffortInstanceObj.date_start = split[2] + '-' + split[
                0] + '-' + split[1]

            split = re.split(r'\/', row[10].strip())

            print split[2] + '-' + split[0] + '-' + split[1]

            EffortInstanceObj.date_end = split[2] + '-' + split[
                0] + '-' + split[1]

            #cool way to make Service Providers unique, if obj does not exist then it creates it.
            #https://docs.djangoproject.com/en/1.6/ref/models/querysets/#get-or-create
            ServiceProviderObj, created = ServiceProvider.objects.get_or_create(
                provider_name=row[1])

            EffortInstanceObj.service_provider = ServiceProvider.objects.get(
                provider_name=row[1])

            EffortInstanceObj.updated_on = utc_datetime

            EffortInstanceObj.updated_by = 'Haiti Aid Map scrape'

            #HaitiAipMap does not have any lat lon coords, so don't add a location point
            #Also, don't use random lat lon. It will break spatial queries

            #loc = Location()
            #loc.latitude = str(random.randint(0,10))
            #loc.longitude = str(random.randint(0,10))
            #loc.save()
            '''
			Insert new code here to match admin boundaries: The location_information column is in column 21 (row [20]). This contains a list
			of admin boundaries where the facility is located at. The list contains entries delimited with '>'. The first entry on the list is Haiti. 
			The second entry is an admin 2 boundary. The third entry is ?.
			
			There can be more than one place listed in the location column. If this is the case then we need to create a new effort instance
			for each location in Haiti.
			'''

            if row[20]:

                split_each_location = re.split(r'\|Haiti>', row[20].strip())

                if len(split_each_location) > 1:
                    split_loc = re.split(
                        r'>', split_each_location[locationOrder].strip())

                    if len(split_loc) > 1:

                        UpperAdmin1 = split_loc[0].upper()

                        UpperAdmin1 = re.split(r'\|', UpperAdmin1)

                        print 'length of split_loc:'

                        print len(split_loc)

                        print 'UpperAdmin1:'

                        print UpperAdmin1[0]

                        EffortInstanceObj.adm_1 = haiti_adm1_minustah.objects.get(
                            adm1=classify_adm1_names[UpperAdmin1[0]])

                        if len(split_loc) > 1:

                            UpperAdmin2 = split_loc[1].upper()

                            UpperAdmin2 = re.split(r'\|', UpperAdmin2)

                            print 'UpperAdmin2:'

                            print UpperAdmin2[0]

                            try:

                                EffortInstanceObj.adm_2 = haiti_adm2_minustah.objects.get(
                                    adm2=classify_adm2_names[UpperAdmin2[0]])

                            except:

                                print "guess no match"

                            if len(split_loc) > 2:

                                UpperAdmin3 = split_loc[2].upper()

                                UpperAdmin3 = re.split(r'\|', UpperAdmin3)

                                print 'UpperAdmin3:'

                                print UpperAdmin3[0]

                                try:

                                    EffortInstanceObj.adm_3 = haiti_adm3_minustah.objects.get(
                                        adm3=classify_adm3_names[
                                            UpperAdmin3[0]])

                                except:

                                    print "guess no match"

            #need a way first in seeing if a location exists close by
            #EffortInstanceObj.location = loc.objects.get
            EffortInstanceObj.save()

            if len(split_each_location) > 1:
                print 'location 1:'
                print split_each_location[1]

            if len(split_each_location) > 2 and adm2Bool == False:
                print 'location 2:'
                print split_each_location[2]
                FillTables(2, True, False)

            if len(split_each_location
                   ) > 3 and adm3Bool == False and adm2Bool == True:
                print 'location 3:'
                print split_each_location[3]
                FillTables(3, True, True)