Spaces:
Sleeping
Sleeping
| """ | |
| Download all sections for key nursing Acts from the Lex API. | |
| Saves as nursing_sections.json for offline use. | |
| """ | |
| import httpx | |
| import json | |
| import time | |
| BASE = "https://lex.lab.i.ai.gov.uk" | |
| NURSING_ACTS = { | |
| "Mental Health Act 1983": "ukpga/1983/20", | |
| "Mental Capacity Act 2005": "ukpga/2005/9", | |
| "Care Act 2014": "ukpga/2014/23", | |
| "Human Rights Act 1998": "ukpga/1998/42", | |
| "Equality Act 2010": "ukpga/2010/15", | |
| "Health and Social Care Act 2012": "ukpga/2012/7", | |
| "Mental Health Units (Use of Force) Act 2018": "ukpga/2018/27", | |
| "Autism Act 2009": "ukpga/2009/15", | |
| "Children Act 1989": "ukpga/1989/41", | |
| "Children Act 2004": "ukpga/2004/31", | |
| "Safeguarding Vulnerable Groups Act 2006": "ukpga/2006/47", | |
| } | |
| all_sections = [] | |
| client = httpx.Client(timeout=60.0) | |
| for act_name, leg_id in NURSING_ACTS.items(): | |
| print(f"\n--- {act_name} ({leg_id}) ---") | |
| # Try searching for all sections of this Act | |
| try: | |
| # Use section search endpoint | |
| resp = client.post( | |
| f"{BASE}/legislation/section/search", | |
| json={ | |
| "query": act_name, | |
| "legislation_id": leg_id, | |
| "size": 200, | |
| "include_text": True, | |
| }, | |
| ) | |
| resp.raise_for_status() | |
| data = resp.json() | |
| sections = data if isinstance(data, list) else data.get("results", data.get("sections", [])) | |
| print(f" Got {len(sections)} sections") | |
| for section in sections: | |
| section["act_name"] = act_name | |
| section["legislation_id"] = leg_id | |
| all_sections.append(section) | |
| time.sleep(1) # Rate limiting | |
| except Exception as e: | |
| print(f" ERROR: {type(e).__name__}: {e}") | |
| # Fallback: try getting sections one by one using browse | |
| try: | |
| resp2 = client.get( | |
| f"{BASE}/legislation/{leg_id}/sections", | |
| params={"limit": 200}, | |
| ) | |
| resp2.raise_for_status() | |
| data2 = resp2.json() | |
| sections2 = data2 if isinstance(data2, list) else data2.get("sections", []) | |
| print(f" Fallback got {len(sections2)} sections") | |
| for section in sections2: | |
| section["act_name"] = act_name | |
| section["legislation_id"] = leg_id | |
| all_sections.append(section) | |
| except Exception as e2: | |
| print(f" Fallback also failed: {type(e2).__name__}: {e2}") | |
| time.sleep(1) | |
| client.close() | |
| print(f"\n=== TOTAL: {len(all_sections)} sections ===") | |
| # Save | |
| output_path = r"c:\Users\g0226\Downloads\Ai Education\NurseLex\nursing_sections.json" | |
| with open(output_path, "w", encoding="utf-8") as f: | |
| json.dump(all_sections, f, indent=2, ensure_ascii=False) | |
| print(f"Saved to {output_path}") | |
| print(f"File size: {len(json.dumps(all_sections)) // 1024} KB") | |
| # Show sample | |
| if all_sections: | |
| s = all_sections[0] | |
| print(f"\nSample keys: {list(s.keys())}") | |
| print(f"Sample title: {s.get('title', '?')}") | |
| print(f"Sample text preview: {str(s.get('text', ''))[:200]}") | |