Negated symptom
Model input
Synthetic note: Denies chest pain. Reports intermittent dizziness.
Extract documented clinical facts, structure report findings, and identify patient and provider roles.
Choose an example
Abstract explicitly documented clinical facts from synthetic notes.
Step 01
Choose an example, review the proposed output, and annotate the fields that need to change. Your guidance defines the learned rules.
Whether current chest pain is explicitly documented.
Preserve whether asthma is current, historical, or denied.
Preserve the certainty of the documented finding.
Abstract explicitly documented clinical facts from synthetic notes.
Synthetic note: Denies chest pain. Reports intermittent dizziness.
Sutro can now generalize the rules based on your feedback.
Step 02
Compare quality and cost on your examples, then choose a model or use Sutro’s default.
Compare models on expert agreement and cost. The interactive chart uses illustrative measurements.
Illustrative sweep · select Value or Best to use that model in your function.
Step 03
Call Sutro Functions like any other software. Swap the model as soon as something more performant is released.
import sutro as so
input_data = {
"text": "Synthetic note: Denies chest pain. Reports intermittent dizziness."
}
result = so.run_function(
"clinical-data-abstraction",
input_data,
)curl --fail-with-body -X POST "${SUTRO_API_URL%/}/v1/functions/clinical-data-abstraction/run" \
-H "Authorization: Key $SUTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"text": "Synthetic note: Denies chest pain. Reports intermittent dizziness."
}
}'import sutro as so
job_id = so.batch_run_function(
name="clinical-data-abstraction",
data="clinical_data_abstraction.csv",
)
results = so.await_job_completion(job_id)curl --fail-with-body -X POST "${SUTRO_API_URL%/}/v1/batch-inference" \
-H "Authorization: Key $SUTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "clinical-data-abstraction",
"inputs": [
{
"text": "Synthetic note: Denies chest pain. Reports intermittent dizziness."
}
]
}'Step 01
Upload sample data, define your output schema, and provide feedback on the hardest cases.
Preserve negation and uncertainty in the source report.
Current measurement in millimeters; not provided when absent.
Prior measurement in millimeters; not provided when absent.
Documented finding with its original clinical qualifiers.
Certainty explicitly expressed for the extracted finding.
Turn synthetic report text into structured findings without changing clinical meaning.
Synthetic report: No pleural effusion. Mild basilar atelectasis.
Sutro can now generalize the rules based on your feedback.
Step 02
Compare quality and cost on your examples, then choose a model or use Sutro’s default.
Compare models on expert agreement and cost. The interactive chart uses illustrative measurements.
Illustrative sweep · select Value or Best to use that model in your function.
Step 03
Call Sutro Functions like any other software. Swap the model as soon as something more performant is released.
import sutro as so
input_data = {
"text": "Synthetic report: No pleural effusion. Mild basilar atelectasis."
}
result = so.run_function(
"medical-report-structuring",
input_data,
)curl --fail-with-body -X POST "${SUTRO_API_URL%/}/v1/functions/medical-report-structuring/run" \
-H "Authorization: Key $SUTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"text": "Synthetic report: No pleural effusion. Mild basilar atelectasis."
}
}'import sutro as so
job_id = so.batch_run_function(
name="medical-report-structuring",
data="medical_report_structuring.csv",
)
results = so.await_job_completion(job_id)curl --fail-with-body -X POST "${SUTRO_API_URL%/}/v1/batch-inference" \
-H "Authorization: Key $SUTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "medical-report-structuring",
"inputs": [
{
"text": "Synthetic report: No pleural effusion. Mild basilar atelectasis."
}
]
}'Step 01
Upload sample data, define your output schema, and provide feedback on the hardest cases.
Name of the patient, distinct from any provider.
Provider who made the referral. Not provided when absent from the source.
Provider who is delivering care. Not provided when absent from the source.
Explicit patient identifier; never infer one from the patient’s name. Not provided when absent from the source.
Extract patient and provider roles from synthetic clinical correspondence.
Synthetic letter: Patient Jordan Vale was referred by Dr Avery Moss to Dr Casey Reed.
Sutro can now generalize the rules based on your feedback.
Step 02
Compare quality and cost on your examples, then choose a model or use Sutro’s default.
Compare models on expert agreement and cost. The interactive chart uses illustrative measurements.
Illustrative sweep · select Value or Best to use that model in your function.
Step 03
Call Sutro Functions like any other software. Swap the model as soon as something more performant is released.
import sutro as so
input_data = {
"text": "Synthetic letter: Patient Jordan Vale was referred by Dr Avery Moss to Dr Casey Reed."
}
result = so.run_function(
"patient-provider-extraction",
input_data,
)curl --fail-with-body -X POST "${SUTRO_API_URL%/}/v1/functions/patient-provider-extraction/run" \
-H "Authorization: Key $SUTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"text": "Synthetic letter: Patient Jordan Vale was referred by Dr Avery Moss to Dr Casey Reed."
}
}'import sutro as so
job_id = so.batch_run_function(
name="patient-provider-extraction",
data="patient_provider_extraction.csv",
)
results = so.await_job_completion(job_id)curl --fail-with-body -X POST "${SUTRO_API_URL%/}/v1/batch-inference" \
-H "Authorization: Key $SUTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "patient-provider-extraction",
"inputs": [
{
"text": "Synthetic letter: Patient Jordan Vale was referred by Dr Avery Moss to Dr Casey Reed."
}
]
}'