Tutoriais e Receitas
Estes guias práticos fazem a ponte entre a teoria do protocolo e o código funcional. Use-os como ponto de partida para suas próprias integrações BSP.
1. Integração de Laboratório (Enviar Dados)
Cenário: Uma clínica quer converter automaticamente resultados diários de exames de sangue em BioRecords BSP e enviá-los para os BEOs dos pacientes.
Passo 1: Conectar à Rede
O laboratório inicializa sua identidade institucional usando sua chave privada.
from bsp_sdk import BSPClient
lab = BSPClient(
domain="clinic.bsp",
private_key=LAB_PRIVATE_KEY
)Passo 2: Validar Consentimento do Paciente
Antes de processar dados, certifique-se de que o paciente concedeu permissão para enviar ao seu BEO.
patient_domain = "andre.bsp"
intent = "SUBMIT_RECORD"
check = lab.access.verify_consent(
beo_domain=patient_domain,
intent=intent
)
if not check.valid:
print(f"Não é possível enviar. Motivo: {check.reason}")
# e.g., TOKEN_REVOKED ou TOKEN_EXPIRED
returnPasso 3: Mapear Dados do LIS para o Formato BSP
Converter os dados internos do laboratório em BioRecords BSP padronizados.
from bsp_sdk import BioRecordBuilder
records = []
for result in internal_lis_results:
record = BioRecordBuilder(lab) \
.set_biomarker(result.bsp_mapping_code) \
.set_value(result.numeric_value) \
.set_unit(result.unit) \
.set_collected_at(result.timestamp) \
.build()
records.append(record)Passo 4: Criptografar e Transmitir
Enviar os registros ao Arweave. O SDK cuida automaticamente da criptografia dos dados com a chave pública do paciente.
response = lab.submit_records(
target_beo=patient_domain,
records=records,
consent_token=check.token.token_id
)
print(f"Registros protegidos com sucesso: {len(records)} registros on-chain.")2. Integração de Plataforma (Ler Dados)
Cenário: Uma plataforma de longevidade quer ler o histórico cardiovascular de um usuário para renderizar um widget personalizado no dashboard.
Passo 1: Solicitar Acesso
A plataforma solicita acesso ao usuário. Isso geralmente aciona um fluxo no aplicativo de carteira BSP do usuário.
// A plataforma solicita um token com escopo APENAS para dados cardiovasculares
const requestUrl = platform.access.createAuthRequestUrl({
intents: ["READ_RECORDS"],
categories: ["BSP-CV"], // Foco cardiovascular
durationDays: 30, // Limitado no tempo
purpose: "Renderizar o Dashboard de Saúde CV"
});
// O usuário clica, aprova no seu dispositivo e retorna um AuthToken ativoPasso 2: Buscar e Filtrar Dados
Uma vez autorizado, consulte a rede pelos registros relevantes. O SDK descriptografará a resposta localmente, pois opera com base na sessão de consentimento explícito do usuário.
const cvRecords = await platform.readRecords({
targetBeo: "andre.bsp",
consentToken: activeAuthToken,
filter: {
categories: ["BSP-CV"],
period: {
from: "2024-01-01T00:00:00Z",
to: null // Até hoje
}
}
});Passo 3: Agregar e Renderizar
Itere sobre os registros padronizados sem se preocupar com qual laboratório os produziu.
// Todos os registros de LDL-P são padronizados em nmol/L, independente da fonte.
const ldlpHistory = cvRecords
.filter(r => r.biomarker === "BSP-CV-001")
.map(r => ({ date: r.collected_at, value: r.value }));
renderChart(ldlpHistory);
