Package: anexo2
Anexo IIGeneración para impresión del "Comprobante de Atención de Beneficiarios de Obras Sociales" (Conocido como Anexo II).SegúnResolucion 487/2002.Art. 2° — Los Hospitales Públicos de Gestión Descentralizada deberán 
  cumplimentar el "Comprobante de Atención de Beneficiarios de Obras Sociales", 
  que se agrega como Anexo II, que pasa a formar parte integrante de la presente 
  Resolución, con carácter de Declaración Jurada, firmado por el médico actuante 
  o Jefe del Servicio, con sello y número de matrícula, y el responsable 
  administrativo del Hospital, con sello, cargo y aclaración de firma, 
  con la correspondiente suscripción o firma del beneficiario, 
  familiar o responsable.Documento original usado de baseacá.Herramienta desarrolladaEste instrumento toma un diccionario con datos y genera un HTML listo para imprimir, firmar y sellar.MuestraInstalacionpip install anexo2Usohospital={'nombre':'HOSPITAL SAN ROQUE',# https://www.sssalud.gob.ar/index.php?page=bus_hosp&cat=consultas'codigo_hpgd':'4321323'}beneficiario={'apellido_y_nombres':'Juan Perez','tipo_dni':'DNI',# | LE | LC'dni':'34100900','tipo_beneficiario':'titular',# | no titular | adherente'parentesco':'conyuge',# hijo | otro'sexo':'M',# | F'edad':88}atencion={'tipo':['consulta','práctica','internación'],'especialidad':'Va un texto al parecer largo, quizas sea del nomenclador','codigos_N_HPGD':['AA01','AA02','AA06','AA07'],# no se de donde son estos códigos'fecha':{'dia':3,'mes':9,'anio':2019},'diagnostico_ingreso_cie10':{'principal':'W020','otros':['w021','A189']}}obra_social={'codigo_rnos':'800501','nombre':'OBRA SOCIAL ACEROS PARANA','nro_carnet_obra_social':'9134818283929101','fecha_de_emision':{'dia':11,'mes':9,'anio':2009},'fecha_de_vencimiento':{'dia':11,'mes':9,'anio':2029}}empresa={'nombre':'Telescopios Hubble','direccion':'Av Astronómica s/n','ultimo_recibo_de_sueldo':{'mes':7,'anio':2019},'cuit':'31-91203043-8'}data={'dia':3,'mes':9,'anio':2019,'hospital':hospital,'beneficiario':beneficiario,'atencion':atencion,'obra_social':obra_social,'empresa':empresa}fromanexo2.docsimportAnexo2anx=Anexo2(data=data)save_to='path.html'res=anx.get_html(save_path=save_to)ifresisNone:print('ERRORES al procesar pedido')forfield,errorinanx.errors.items():print(f' -{field}:{error}')else:print(f'Procesado correctamente y grabado en{save_to}')Validación de los datosInternamente se usa la libreríacerberuspara validar los datos.Ninguno de los campos es requeridoy los que estén ausentes no se completarán en el html.Aquí se puede ver el esquema de validación:fromanexo2.docsimportAnexo2anx=Anexo2(data={})anx.get_schema(){
	'dia': {
		'type': 'integer',
		'min': 1,
		'max': 31
	},
	'mes': {
		'type': 'integer',
		'min': 1,
		'max': 12
	},
	'anio': {
		'type': 'integer',
		'min': 2019,
		'max': 2030
	},
	'hospital': {
		'type': 'dict',
		'schema': {
			'nombre': {
				'type': 'string'
			},
			'codigo_hpgd': {
				'type': 'string'
			}
		}
	},
	'beneficiario': {
		'type': 'dict',
		'schema': {
			'apellido_y_nombres': {
				'type': 'string'
			},
			'tipo_dni': {
				'type': 'string',
				'allowed': ['DNI', 'LE', 'LC']
			},
			'dni': {
				'type': 'string'
			},
			'tipo_beneficiario': {
				'type': 'string',
				'allowed': ['titular', 'no titular', 'adherente']
			},
			'parentesco': {
				'type': 'string',
				'allowed': ['conyuge', 'hijo', 'otro']
			},
			'sexo': {
				'type': 'string',
				'allowed': ['F', 'M']
			},
			'edad': {
				'type': 'integer',
				'min': 0,
				'max': 110
			}
		}
	},
	'atencion': {
		'type': 'dict',
		'schema': {
			'tipo': {
				'type': 'string',
				'allowed': ['consulta', 'práctica', 'internación']
			},
			'especialidad': {
				'type': 'string'
			},
			'codigos_N_HPGD': {
				'type': 'list'
			},
			'fecha': {
				'type': 'dict',
				'schema': {
					'dia': {
						'type': 'integer',
						'min': 1,
						'max': 31
					},
					'mes': {
						'type': 'integer',
						'min': 1,
						'max': 12
					},
					'anio': {
						'type': 'integer',
						'min': 2019,
						'max': 2030
					}
				}
			},
			'diagnostico_ingreso_cie10': {
				'type': 'dict',
				'schema': {
					'principal': {
						'type': 'string'
					},
					'otros': {
						'type': 'list'
					}
				}
			}
		}
	},
	'obra_social': {
		'type': 'dict',
		'schema': {
			'codigo_rnos': {
				'type': 'string'
			},
			'nombre': {
				'type': 'string'
			},
			'nro_carnet_obra_social': {
				'type': 'string'
			},
			'fecha_de_emision': {
				'type': 'dict',
				'schema': {
					'dia': {
						'type': 'integer',
						'min': 1,
						'max': 31
					},
					'mes': {
						'type': 'integer',
						'min': 1,
						'max': 12
					},
					'anio': {
						'type': 'integer',
						'min': 1970,
						'max': 2030
					}
				}
			},
			'fecha_de_vencimiento': {
				'type': 'dict',
				'schema': {
					'dia': {
						'type': 'integer',
						'min': 1,
						'max': 31
					},
					'mes': {
						'type': 'integer',
						'min': 1,
						'max': 12
					},
					'anio': {
						'type': 'integer',
						'min': 2019,
						'max': 2030
					}
				}
			}
		}
	},
	'empresa': {
		'type': 'dict',
		'schema': {
			'nombre': {
				'type': 'string'
			},
			'direccion': {
				'type': 'string'
			},
			'ultimo_recibo_de_sueldo': {
				'type': 'dict',
				'schema': {
					'dia': {
						'type': 'integer',
						'min': 1,
						'max': 31
					},
					'mes': {
						'type': 'integer',
						'min': 1,
						'max': 12
					},
					'anio': {
						'type': 'integer',
						'min': 1970,
						'max': 2030
					}
				}
			},
			'cuit': {
				'type': 'string'
			}
		}
	}
}