Payload Format
Tiep delivers two payload strategies depending on how tightly you want to align with healthcare interoperability standards:
- Standard HL7 FHIR bundle (default and recommended).
- Simplified
formDatadump that mirrors your registered form schema as described in the previous section.
Option 1: Standard HL7 FHIR (default)
Regardless of whether you integrate via API or webhook, Tiep can deliver the same HL7 FHIR JSON structure. The bundle follows the HL7 FHIR specification with the following structure: + Composition (must be the first entry as per FHIR rules) + Patient + Encounter + Practitioner + Observations: any measurable thing - weight, age, sports - might be many + Conditions: think diagnosis - might be many + MedicationRequests: think medical prescription - ibuprofen, amoxicillin - might be many + ServiceRequests: think an MRI, a lab test, a colonoscopy, etc. - might be many + AllergyIntolerances: think allergy to peaches and how they react. - might be many + CarePlan: how a practitioner intends to deliver care for the patient + ClinicalImpressions: encapsulates a list of resources related to one clinical case.
For instance, if a patient has a broken leg and arm, we encapsulate
all the observations related to the leg in one ClinicalImpression
and the other observations related to the arm in another.
Note how there is only one composition but there can be many clinical impressions. Indeed, a patient is given one report when they leave the doctor's office, but there can be different clinical cases within that report.
Example shoulder consultation payload:
{
"context": {
"additional_metadata": 4,
"is_first_time": true
},
"fhir": {
"resourceType": "Bundle",
"id": "bundle-consultation-example",
"type": "document",
"timestamp": "2024-01-11T10:00:00Z",
"entry": [
{
"fullUrl": "urn:uuid:composition-1",
"resource": {
"resourceType": "Composition",
"id": "composition-1",
"status": "final",
"subject": {
"reference": "Patient/patient-1"
},
"date": "2024-01-11T09:30:00Z",
"author": [
{
"reference": "Practitioner/practitioner-1"
}
],
"title": "Consultation Note",
"section": [
{
"title": "Vitals and Initial Observations",
"text": "Vitals are correct with emphasis on...",
"entry": [
{
"reference": "Observation/obs-1"
},
{
"reference": "Observation/obs-2"
}
]
},
{
"title": "Findings and Plan",
"text": "The plan is to...",
"entry": [
{
"reference": "Observation/obs-3"
},
{
"reference": "MedicationRequest/medrequest-1"
},
{
"reference": "ServiceRequest/srvrequest-1"
}
]
}
]
}
},
{
"fullUrl": "urn:uuid:patient-1",
"resource": {
"resourceType": "Patient",
"id": "patient-1",
"identifier": [
{
"system": "http://examplehospital.org/patients",
"value": "123456"
}
],
"name": [
{
"use": "official",
"family": "Doe",
"given": ["John"]
}
]
}
},
{
"fullUrl": "urn:uuid:practitioner-1",
"resource": {
"resourceType": "Practitioner",
"id": "practitioner-1",
"identifier": [
{
"system": "http://examplehospital.org/providers",
"value": "DR987"
}
],
"name": [
{
"use": "official",
"family": "Smith",
"given": ["Jane"]
}
]
}
},
{
"fullUrl": "urn:uuid:obs-1",
"resource": {
"resourceType": "Observation",
"id": "obs-1",
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs"
}
]
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "85354-9",
"display": "Blood pressure panel"
}
]
},
"subject": {
"reference": "Patient/patient-1"
},
"effectiveDateTime": "2024-01-11T09:20:00Z",
"valueString": "Blood Pressure: 120/80 mmHg"
}
},
{
"fullUrl": "urn:uuid:obs-2",
"resource": {
"resourceType": "Observation",
"id": "obs-2",
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "laboratory"
}
]
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "718-7",
"display": "Hemoglobin [Mass/volume] in Blood"
}
]
},
"subject": {
"reference": "Patient/patient-1"
},
"effectiveDateTime": "2024-01-11T09:25:00Z",
"valueQuantity": {
"value": 14.5,
"unit": "g/dL",
"system": "http://unitsofmeasure.org",
"code": "g/dL"
}
}
},
{
"fullUrl": "urn:uuid:obs-3",
"resource": {
"resourceType": "Observation",
"id": "obs-3",
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "clinical"
}
]
}
],
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "281798007",
"display": "Physical examination finding"
}
],
"text": "General physical exam"
},
"subject": {
"reference": "Patient/patient-1"
},
"effectiveDateTime": "2024-01-11T09:28:00Z",
"valueString": "Patient reports mild headache and slight dizziness."
}
},
{
"fullUrl": "urn:uuid:medrequest-1",
"resource": {
"resourceType": "MedicationRequest",
"id": "medrequest-1",
"status": "active",
"intent": "order",
"medicationCodeableConcept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "387517004",
"display": "Ibuprofen 200mg oral tablet"
}
],
"text": "Ibuprofen 200mg Tablet"
},
"subject": {
"reference": "Patient/patient-1"
},
"authoredOn": "2024-01-11T09:45:00Z",
"requester": {
"reference": "Practitioner/practitioner-1"
},
"dosageInstruction": [
{
"text": "Take 1 tablet by mouth every 6 hours as needed for pain",
"timing": {
"repeat": {
"frequency": 1,
"period": 6,
"periodUnit": "h"
}
},
"route": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "26643006",
"display": "Oral route"
}
]
}
}
]
}
},
{
"fullUrl": "urn:uuid:srvrequest-1",
"resource": {
"resourceType": "ServiceRequest",
"id": "srvrequest-1",
"status": "active",
"intent": "order",
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "306006008",
"display": "Magnetic resonance imaging of brain"
}
],
"text": "MRI of the Brain"
},
"subject": {
"reference": "Patient/patient-1"
},
"authoredOn": "2024-01-11T09:50:00Z",
"requester": {
"reference": "Practitioner/practitioner-1"
}
}
}
]
}
}
Option 2: formData payload
When your facility selects the SIMPLE payload type, Tiep returns a single formData object alongside the generated report. The shape of formData mirrors the Form schema you submitted: keys follow the property names you registered, and values are plain JSON primitives or nested objects.
{
"encounter": {
"reason": "Right shoulder pain",
"priority": "urgent"
},
"vitals": {
"weight": 82,
"height": 178,
"bmi": 25.9
},
"diagnoses": [
"M75.1"
],
"plan": "Start PT twice a week"
}
- Only answered fields are included, keeping the payload compact.
- For coded answers (
anyOf/oneOf), the payload carries theconstvalue (coded value) that you assigned in the form definition.
Use this mode when you simply want to persist Tiep’s structured answers without managing the entire HL7 bundle. You can always switch facilities back to an HL7 payload later if interoperability requirements change.
Comparison at a glance
| Aspect | Standard HL7 FHIR | formData payload |
|---|---|---|
| Interoperability with third-party systems | ✅ Uses a widely adopted standard | ⚠️ Custom, depends on the form |
| Initial engineering effort | ❌ Requires mapping to FHIR upfront | ✅ Simple JSON tree, no FHIR knowledge required |
| Long-term maintenance | ✅ Stable spec with community tooling | ✅ You evolve the form schema as your workflows grow |
| Payload size | ❌ Larger bundles with many resources | ✅ Only answers, no resource metadata |