Forum Discussion

bopritchard's avatar
bopritchard
Occasional Contributor
6 years ago

How to express an array in a swagger definition

How can I express an array of objects in a defition.

Here's the sample json

{
	"resourceType": "Patient",
	"extension": [{
			"url": "http://hl7.org/fhir/StructureDefinition/us-core-race",
			"extension": [{
				"url": "ombCategory",
				"valueCoding": {
					"system": "http://hl7.org/fhir/v3/Race",
					"code": "2106-3",
					"display": "White"
				}
			}]
		},
		{
			"url": "http://hl7.org/fhir/StructureDefinition/us-core-ethnicity",
			"extension": [{
				"url": "ombCategory",
				"valueCoding": {
					"system": "http://hl7.org/fhir/v3/Ethnicity",
					"code": "2135-2",
					"display": "Hispanic or Latino"
				}
			}]
		}
	]
}
  • RonRatovsky's avatar
    RonRatovsky
    6 years ago
    extension:
      type: array
      items:
        oneOf:
          - $ref: '#/definitions/Race'
          - ...
          
    • bopritchard's avatar
      bopritchard
      Occasional Contributor

      I'm almost there.

      extension:
              type: array
              items:
                type: object
                properties:
                  race:
                    $ref: '#/definitions/Race'
                  ethnicity:
                    $ref: '#/definitions/Ethnicity'
                  sex:
                    $ref: '#/definitions/Sex'

      This includes an extraneous key before each definition

        "extension": [{
          "race": {
            "url": "http://hl7.org/fhir/StructureDefinition/us-core-race",
            "extension": {
              "url": "ombCategory",
              "valueCoding": {
                "system": "http://hl7.org/fhir/v3/Race",
                "code": "2106-3",
                "display": "White"
              }
            }
          },
          "ethnicity": {
            "url": "http://hl7.org/fhir/StructureDefinition/us-core-ethnicity",
            "extension": {
              "url": "ombCategory",
              "valueCoding": {
                "system": "http://hl7.org/fhir/v3/Ethnicity",
                "code": "2135-2",
                "display": "Hispanic or Latino"
              }
            }
          },
          "sex": {
            "url": "http://hl7.org/fhir/StructureDefinition/us-core-birthsex",
            "valueCode": "M"
          }
        }]

      But I need it to look like this:

      "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/us-core-race",
            "extension": {
              "url": "ombCategory",
              "valueCoding": {
                "system": "http://hl7.org/fhir/v3/Race",
                "code": "2106-3",
                "display": "White"
              }
            }
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/us-core-ethnicity",
            "extension": {
              "url": "ombCategory",
              "valueCoding": {
                "system": "http://hl7.org/fhir/v3/Ethnicity",
                "code": "2135-2",
                "display": "Hispanic or Latino"
              }
            }
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/us-core-birthsex",
            "valueCode": "M"
          }
        ]

      Thanks RonRatovsky  for any additional help you might be able to offer.

       

      • RonRatovsky's avatar
        RonRatovsky
        Staff

        Instead of defining the array as an object containing the three properties, try defining the array value as 'oneOf' the three objects.