google / fhir Goto Github PK
View Code? Open in Web Editor NEWFHIR Protocol Buffers
License: Apache License 2.0
FHIR Protocol Buffers
License: Apache License 2.0
Are there any plans to make a Python PIP release of google.fhir? Haven't found any existing ones, just for JSON. Would be very handy.
Thank you!
Both proto/google/fhir/proto/r4/core/datatypes.proto
and proto/google/fhir/proto/r4/core/profiles/datatypes.proto
generate a class named DatatypesReflection
as part of the standard output from protoc
. Both *.proto
files use the same package google.fhir.r4.core
. This results in a duplicate name collision in the generated output.
This problem disappears if the datatypes.proto
file is moved into the google.fhir.r4.core.profiles
namespace.
Tho' I am not certain if that causes any other unrelated issues.
The latest Synthea gives different output. An older version works fine for me, however the latest results in:
ValueError: String 'Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999999959' cannot be parsed as a reference.
I can write up a code sample if need be.
This is using Synthea from master: https://github.com/synthetichealth/synthea/releases/download/master-branch-latest/synthea-with-dependencies.jar
It looks like they have some versions released more recently, I will try those.
This is buf: https://github.com/bufbuild/buf
I'm not sure if this is an issue in buf
or the proto here. What do you think?
root@host:~/fhir# buf check lint
proto/r4/core/profiles/datatypes.proto:31:1:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:65:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:68:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:71:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.modifier_extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:74:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.path: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:81:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.slice_name: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:84:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.slice_is_constraining: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:87:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.label: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:90:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.code: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:99:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.definition: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:102:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.comment: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:105:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.requirements: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:108:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.alias: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:111:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.min: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:114:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.max: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:118:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Base: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:120:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Base.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:123:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Base.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:126:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Base.path: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:130:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Base.min: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:134:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Base.max: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:137:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.base: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:143:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:150:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:153:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:156:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.code: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:164:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.target_profile: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:170:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.VersioningCode: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:178:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.VersioningCode.value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:180:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.VersioningCode.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:182:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.VersioningCode.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:184:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.TypeRef.versioning: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:186:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.type: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:189:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:193:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.base64_binary: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:194:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.boolean: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:195:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.canonical: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:196:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.code: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:197:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.date: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:198:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.date_time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:199:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.decimal: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:200:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:201:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.instant: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:202:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.integer: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:203:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.markdown: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:204:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.oid: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:205:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.positive_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:206:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.string_value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:207:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:208:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.unsigned_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:209:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.uri: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:210:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.url: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:211:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.uuid: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:212:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.address: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:213:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.age: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:214:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.annotation: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:215:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.attachment: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:216:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.codeable_concept: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:217:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.coding: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:218:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.contact_point: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:219:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.count: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:220:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.distance: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:221:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.duration: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:222:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.human_name: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:223:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.identifier: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:224:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.money: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:225:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.period: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:226:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.quantity: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:227:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.range: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:228:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.ratio: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:229:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.reference: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:230:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.sampled_data: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:231:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.signature: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:232:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.timing: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:233:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.contact_detail: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:234:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.contributor: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:235:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.data_requirement: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:236:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.expression: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:237:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.parameter_definition: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:238:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.related_artifact: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:239:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.trigger_definition: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:240:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.usage_context: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:241:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.DefaultValueX.dosage: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:244:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.default_value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:247:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.meaning_when_missing: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:250:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.order_meaning: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:259:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:261:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:264:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:267:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.label: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:271:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:275:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.base64_binary: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:276:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.boolean: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:277:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.canonical: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:278:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.code: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:279:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.date: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:280:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.date_time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:281:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.decimal: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:282:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:283:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.instant: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:284:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.integer: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:285:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.markdown: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:286:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.oid: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:287:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.positive_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:288:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.string_value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:289:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:290:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.unsigned_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:291:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.uri: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:292:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.url: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:293:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.uuid: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:294:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.address: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:295:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.age: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:296:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.annotation: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:297:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.attachment: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:298:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.codeable_concept: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:299:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.coding: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:300:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.contact_point: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:301:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.count: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:302:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.distance: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:303:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.duration: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:304:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.human_name: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:305:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.identifier: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:306:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.money: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:307:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.period: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:308:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.quantity: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:309:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.range: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:310:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.ratio: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:311:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.reference: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:312:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.sampled_data: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:313:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.signature: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:314:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.timing: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:315:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.contact_detail: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:316:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.contributor: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:317:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.data_requirement: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:318:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.expression: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:319:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.parameter_definition: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:320:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.related_artifact: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:321:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.trigger_definition: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:322:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.usage_context: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:323:9:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.ValueX.dosage: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:326:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Example.value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:329:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.example: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:332:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:336:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.date: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:337:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.date_time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:338:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.instant: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:339:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:340:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.decimal: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:341:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.integer: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:342:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.positive_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:343:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.unsigned_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:344:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MinValueX.quantity: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:347:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.min_value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:350:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:354:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.date: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:355:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.date_time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:356:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.instant: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:357:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.time: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:358:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.decimal: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:359:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.integer: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:360:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.positive_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:361:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.unsigned_int: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:362:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.MaxValueX.quantity: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:365:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.max_value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:368:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.max_length: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:371:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.condition: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:374:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:379:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:382:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:385:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.key: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:388:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.requirements: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:391:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.SeverityCode: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:399:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.SeverityCode.value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:401:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.SeverityCode.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:403:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.SeverityCode.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:405:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.severity: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:409:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.human: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:413:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.expression: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:416:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.xpath: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:419:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Constraint.source: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:421:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.constraint: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:424:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.must_support: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:430:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.is_modifier_reason: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:436:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:441:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:444:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:447:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.StrengthCode: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:455:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.StrengthCode.value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:457:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.StrengthCode.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:459:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.StrengthCode.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:461:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.strength: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:465:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.description: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:468:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.ElementDefinitionBinding.value_set: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:470:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.binding: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:473:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:475:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:478:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:481:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.identity: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:485:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.LanguageCode: already defined as message in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:496:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.LanguageCode.id: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:498:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.LanguageCode.extension: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:501:7:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.LanguageCode.value: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:503:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.language: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:506:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.map: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:510:5:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.Mapping.comment: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:512:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.mapping: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:515:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.question: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
proto/r4/core/profiles/datatypes.proto:522:3:duplicate symbol google.fhir.r4.core.DataElementConstraintOnElementDefinitionDataType.allowed_units: already defined as field in "proto/r4/core/profiles/data_element_constraint_on_element_definition_data_type.proto"
abseil-py v1.0.0 was recently released: https://github.com/abseil/abseil-py/releases/tag/v1.0.0
google-fhir currently requires v0.10.0, which is several releases behind.
The helper code that just landed temporarily writes file-level go_package
options -- is there any reason these don't get added directly to the .proto
files?
Currently, we are locked into 3.x with ~=3.13
.
If I forcibly install 4.21, I get this:
E TypeError: Descriptors cannot not be created directly.
E If this call came from a _pb2.py file, your generated code is out of date and must b
e regenerated with protoc >= 3.19.0.
E If you cannot immediately regenerate your protos, some other possible workarounds ar
e:
E 1. Downgrade the protobuf package to 3.20.x or lower.
E 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python
parsing and will be much slower).
E
E More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-0
6#python-updates
Would it be possible to regenerate with a newer protoc and allow for protobuf v4 to be used?
Thank you!
google.protobuf.json_format
's functions don't seem to work with FHIR JSON, even that produced by Synthea.
Would it be possible to add some kind of function that would convert to FHIR JSON and vice versa?
I need to generate C++ code from profiles (json) containing slices on structured fields (e.g. Address).
Maybe I can implement the missing feature myself, but I need some advice.
Details:
From my investigations I found two problems:
private DescriptorProto generateMessage(
ElementDefinition currentElement,
List<ElementDefinition> elementList,
DescriptorProto.Builder builder)
throws InvalidFhirException {
...
for (ElementDefinition deferredElement : deferredElements) {
// Currently we only support slicing for Extensions and Codings
if (isElementSupportedForSlicing(deferredElement)
...
} else {
cgmDebugOut(2, "Build field slicing (not supported yet):" + cgmStringify(deferredElement.getId().getValue()));
builder
.addFieldBuilder()
.setNumber(nextTag)
.getOptionsBuilder()
.setExtension(
ProtoGeneratorAnnotations.reservedReason,
"field "
+ nextTag
+ " reserved for "
+ deferredElement.getId().getValue()
+ " which uses an unsupported slicing on "
+ deferredElement.getType(0).getCode().getValue());
nextTag++;
}
}
...
}
If I'm right, some annotations have been foreseen for discrimination of the right slice.
Regarding annotation fhir_slice_by, I am not sure, if this is the intended use. As far as I understand, slicing type and path must be specified.
Something like this:
"[(.google.fhir.proto.fhir_slice_by) = "value:type"]" means the slice discriminator is by "value" from field "type".
There are likely other places where this would also be the case, but I found it when using resource
in Parameters.Parameter
. Trying to pass a resource (e.g. Parameters
) into resource
throws an error, and if you do it directly mypy will give you an error as well. From what I can tell the proper way is to pack it into an Any
protobuf, but then when printing to JSON it prints invalid JSON.
Here's some sample code that reproduces the issue:
from google.fhir.r4 import json_format
from proto.google.fhir.proto.r4.core.resources.bundle_and_contained_resource_pb2 import ( # noqa: E501
Bundle,
ContainedResource,
)
from google.protobuf.any_pb2 import Any as AnyPB
from proto.google.fhir.proto.r4.core.resources.parameters_pb2 import Parameters
from proto.google.fhir.proto.r4.core.datatypes_pb2 import Uri
from uuid import uuid4
raw_nested_resource = Parameters()
packed_nested_resource = AnyPB()
packed_nested_resource.Pack(raw_nested_resource)
def convert_nested_resource_to_json(nested_resource) -> None:
entry = Bundle.Entry(
full_url=Uri(value=f"urn:uuid:{uuid4()}"),
resource=ContainedResource(
parameters=Parameters(
parameter=[Parameters.Parameter(resource=nested_resource)]
)
),
)
print(json_format.pretty_print_fhir_to_json_string(entry))
print("Converting packed nested resource to json:")
convert_nested_resource_to_json(packed_nested_resource)
print("\nConverting raw nested resource to json:")
convert_nested_resource_to_json(raw_nested_resource)
and the output:
$ python3 test_fhir.py
Converting packed nested resource to json:
{
"fullUrl": "urn:uuid:eca063c6-48da-4619-9ae6-89bde23b689a",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"resource":
}
]
}
}
Converting raw nested resource to json:
Traceback (most recent call last):
File "test_fhir.py", line 35, in <module>
convert_nested_resource_to_json(raw_nested_resource)
File "test_fhir.py", line 23, in convert_nested_resource_to_json
parameter=[Parameters.Parameter(resource=nested_resource)]
TypeError: Parameter to MergeFrom() must be instance of same class: expected google.protobuf.Any got google.fhir.r4.core.Parameters.
If you take out the variable and hardcode nested_resource
to Parameters()
, mypy will also give you an error:
Argument "resource" to "Parameter" has incompatible type "Parameters"; expected "Optional[google.protobuf.any_pb2.Any]"
Release v0.5.1 mentions FhirProto parsing, printing, and validating libraries in Python and Go but they are not present.
We've implemented a Go version ourselves and would love to deprecate it.
First off, thank you so much for adding the json_format stuff. It's just been fantastic to work with.
Noticing a bug with our code, or could maybe be with json_format.
I know about the DST issue mentioned here: https://github.com/google/fhir/releases/tag/v0.6.2
We are trying to normalize to UTC (or rather, treat all dates as UTC). At least for now, in this bit of code.
What we're seeing is that when converting from FHIR JSON to protobuf to FHIR JSON, 2016-03-03T10:10:57-07:00 ends up getting represented as 2016-03-04. I've tried forcing UTC timezone on my system and am still seeing that.
Does this seem possible? Likely? One comparison I had seemed to indicate it was off by exactly 8 hours.
I can come up with a more concrete test case if you like. This is using Synthea generated JSON LPRs.
My colleague is suggesting that maybe it's how the protobufs are converting to microseconds without timezones, then back to a date string. I still don't see how the date would up being ahead and not behind (or the same, looking at the date and not the time).
Thank you!
All python related files were removed with 6773267
The entire /py/* subtree is gone.
Judging from the got description this was not intendend? Or is python support silently removed?
Hi everyone,
According to https://github.com/google/fhir/blame/master/py/google/fhir/r4/json_format.py#L82,L83 json_fhir_string_to_proto()
should raise InvalidFhirError
.
In this example, it raises ValueError
instead. I have not tested with the latest google-fhir but am suspecting the results may be the same.
import json
from google.fhir.fhir_errors import InvalidFhirError
from google.fhir.r4.json_format import json_fhir_string_to_proto
from proto.google.fhir.proto.r4.core.resources.bundle_and_contained_resource_pb2 import ( # noqa: E501
Bundle,
)
INVALID_BUNDLE_DICT = {
"resourceType": "Bundle",
"type": "not a transaction",
"entry": [
{
"fullUrl": "urn:uuid:85e52038-4d69-50e9-9e46-e379b8d830af",
"resource": {
"resourceType": "Patient",
"id": "85e52038-4d69-50e9-9e46-e379b8d830af",
"name": [
{"use": "official", "family": "Simpson", "given": ["Homer", "Jay"]}
],
},
}
],
}
try:
json_fhir_string_to_proto(json.dumps(INVALID_BUNDLE_DICT), Bundle)
except InvalidFhirError:
print("Excepts as expected.")
print("Success.")
Let me know if anything is unclear. The error is under the type field. Happy to help dig in further if need be.
Thank you for your time.
I want to use the US Core profile. However, I don't see any way of parsing a US Core Patient JSON into a USCorePatientProfile
. The jsonformat
unmarshaller always returns an instance of *r4pb.ContainedResource
.
Is there a way to convert from one profile to another like in C++? Or unmarshal directly into a USCorePatientProfile
?
I know that Python 3.10 stable isn't out yet, but it'd be nice to be ready for it if possible.
https://docs.python.org/3.10/whatsnew/3.10.html
Currently, setup.py sets the version range at 3.6-3.9.
https://github.com/google/fhir/blob/master/py/setup.py#L155
$ poetry update
Updating dependencies
Resolving dependencies... (8.4s)
SolverProblemError
The current project's Python requirement (>=3.8,<3.11) is not compatible with some of the required packages Python requirement:
- google-fhir requires Python >=3.6, <3.10, so it will not be satisfied for Python >=3.10,<3.11
Because google-fhir (0.7.2) requires Python >=3.6, <3.10
and no versions of google-fhir match >0.7.2,<0.8.0, google-fhir is forbidden.
So, because hos depends on google-fhir (^0.7.2), version solving failed.
Could use this library to generate a FHIR client library which accepts JSON from a FHIR server which is not using gRPC?
I'm new to protocol buffers and gRPC and I've been looking into this for a couple days, but I've been having hard time finding a definitive answer. Thank you for your help in advance!
Hi everyone,
It'd be great to have FHIR 4.3.0 / R4B support. Not sure if this is in the works or not, but figured I'd open this up just in case.
https://build.fhir.org/branches/R4B/
Thank you!
Hello, I'm using the Go package to help compose a PATCH call to our FHIR Store on GCP. I'm trying to update a Task's Output field with a reference to a QuestionnaireResponseId
and I'm having trouble composing a correct PATCH call using the provided fhir/go/proto/google/fhir/proto/r4/core/resources/task_go_proto/
package. Specifically Task_Output
.
[]proto.Message
, which in this case contains a single Task_Output
entry[]proto.Message
using a jsonformatter.AnalyticsMarshaller
, afterwards we marshall the entire message into bytes using Go's json
libraryTask
endpoint using the relevant payload, API parameters and headers and make the requestThe issue I am encountering is a key mismatch between what the FHIR Store is expecting and the message generated by encoding the proto.Message
.
The FHIR store expects a message like this, I have tested calls to our FHIR Store with the message format below using Postman and a 200 Success
message is returned and the entries are updated (Given a proper FHIR QuestionnaireResponseId
is passed rather than Q...1234...):
[
{
"op": "add",
"path": "/output",
"value": [
{
"type": {
"text": "QuestionnaireResponse generated"
},
"valueReference": {
"reference": "QuestionnaireResponse/QuestionnaireResponseId_12345678"
}
}
]
}
]
The message generated by our backend is like this, notice the value
key and the two reference
entries, testing these calls to our FHIR Store using Postman returns a 400 Bad Request
error:
[
{
"op": "add",
"path": "/output",
"value": [
{
"type": {
"text": "QuestionnaireResponse generated"
},
"value": {
"reference": {
"reference": "QuestionnaireResponse/QuestionnaireResponse/questionnaireId"
}
}
}
]
}
]
Essentially, the FHIR Store is expecting the key valueReference
but the message generated by our backend using the Task_Output
model found in fhir/go/proto/google/fhir/proto/r4/core/resources/task_go_proto/task.pb.go
is returning the key as value
. I believe this is because the proto and json names are set to value
in the provided library. The valueReference
field aligns with the following Task Output example.
For more context, here is the structure of the Task_Output
value payload that is being used in the PATCH call:
/**
questionnaireId is the FHIR ID for the questionnaireResponseId we are trying to PATCH to the Task Output entry
QuestionnaireResponseGenerated = "QuestionnaireResponse generated"
QuestionnaireResponseResourceType = "QuestionnaireResponse"
**/
&task_go_proto.Task_Output{
Type: &datatypes_go_proto.CodeableConcept{
Text: &datatypes_go_proto.String{
Value: fhir_constants.QuestionnaireResponseGenerated,
},
},
Value: &task_go_proto.Task_Output_ValueX{
Choice: &task_go_proto.Task_Output_ValueX_Reference{
Reference: &datatypes_go_proto.Reference{
Reference: &datatypes_go_proto.Reference_QuestionnaireResponseId{
QuestionnaireResponseId: &datatypes_go_proto.ReferenceId{
Value: fmt.Sprintf("%s/%s", fhir_constants.QuestionnaireResponseResourceType, questionnaireId),
},
},
},
},
},
},
I've tried multiple variations of the Task_Output_ValueX
field but they all return the value
key. I've tried extending the Task_Output
class as well using a struct of my own but the fields outside Task_Output
get ignored by the jsonformatter.Marshaller
Any insight into possible solutions for this problem would be greatly appreciated. Any more information or context that you may need, I will be happy to provide. Thank you!
Currently, it's a little tricky to figure out how to write an extension and/or profile. Assuming the users of this library are already familiar with protobufs, I'd say it'd be simpler if an extension could be generated from a protobuf file (i.e. if generate_protos_from_config.sh
accepted a .proto
).
That said, I am not sure about whether in general a .proto
has "too much" or "not enough" information to generate an extension (as I still figure out how to write an extension and profile).
When parsing the CMS DPC synthetic test files ExplanationOfBenefit and Coverage do not parse cleanly.
err: error at "Coverage": unknown field
error at "ExplanationOfBenefit.extension[0].valueMoney": unknown field
error at "ExplanationOfBenefit.item[0].adjudication[0].amount": unknown field
How are y'all dealing with this? Thanks
Is there a canonical enum representing the available FHIR resource types? I couldn't find it. Are implementers expected to roll their own lists? e.g. "Patient", "Practitioner", "PractitionerRole", ... and so on. Seems error-prone vs having a canonical enum from the protos.
Thank you.
The following files have collisions on case-insensitive filesystems:
spec/hl7.fhir.core/3.0.1/package/CodeSystem-example.json
spec/hl7.fhir.core/3.0.1/package/CodeSystem-list-example-codes.json
spec/hl7.fhir.core/3.0.1/package/ValueSet-example-expansion.json
spec/hl7.fhir.core/3.0.1/package/ValueSet-example-intensional.json
spec/hl7.fhir.core/3.0.1/package/ValueSet-list-example-codes.json
This makes including this repository as a submodule inconvenient as the submodule will always report a dirty filesystem state.
There are duplicate types which seems iffy. Identical files with just different names.
For example:
https://github.com/google/fhir/blob/master/proto/r4/core/profiles/datatypes.proto#L31
Would there be any way to trim this down to just one file for a certain type definition?
This is one of the things keeping buf check lint
from passing: #15
More information here: bufbuild/buf#99
Thank you!
When importing some FHIR packages, go mod tidy
dies and refuses to proceed due to a size issue. Has anyone managed to get this to work?
go: finding module for package github.com/google/fhir/proto/google/fhir/proto/r4/core/codes_go_proto
go: finding module for package github.com/google/fhir/proto/google/fhir/proto/r4/core/resources/bundle_and_contained_resource_go_proto
github.com/google/fhir/proto/google/fhir/proto/r4/core/codes_go_proto: create zip: module source tree too large (max size is 524288000 bytes)
github.com/google/fhir/proto/google/fhir/proto/r4/core/resources/bundle_and_contained_resource_go_proto: create zip: module source tree too large (max size is 524288000 bytes)
backports.zoneinfo on Python 3.9+ has to be compiled, so can't install in say the python:3.9-slim image.
I opened a PR, but got this big notice about signing a CLA. It's a very simple PR and I'm not sure if you can merge PRs here.
Feel free to reuse the two changed lines (if they even work) any way you please.
Thank you! Let me know if you have any questions.
Hi, is there a plan to support proto messages for R5 version in this repo?
I am marshalling a proto message using the below code
Print of a proto struct instance
code:{coding:{system:{value:"https://snomed.info/sct"} code:{value:"d-5007465174"}} coding:{system:{value:"http://mdb.eka.care/technical"} code:{value:"d-5007465174"} display:{value:"COVID-19"}}} subject:{patient_id:{value:"oid"}} onset:{date_time:{value_us:1577836800 timezone:"Asia/Kolkata" precision:SECOND}} recorded_date:{value_us:1713875467 timezone:"Asia/Kolkata" precision:SECOND}
Code
import "github.com/google/fhir/go/jsonformat"
jsonMarshaller, _ := jsonformat.NewMarshaller(false, "", "", fhirversion.R4)
encodedResource, _ := jsonMarshaller.MarshalResource(resource) // resource is the above instance
print(string(encodedResource))
Above print output
{"code":{"coding":[{"code":"d-5007465174","system":"https://snomed.info/sct"},{"code":"d-5007465174","display":"COVID-19","system":"http://mdb.eka.care/technical"}]},"onsetDateTime":"1970-01-01T05:56:17+05:30","recordedDate":"1970-01-01T05:58:33+05:30","resourceType":"Condition","subject":{"reference":"Patient/oid"}}
The issue is the value of recorded_date in proto model is 1713875467, while after marshal, it's becoming 1970-01-01T05:58:33+05:30
I am unsure what's causing the issue though the code is straighforward. Similar is the case with onset.
Request help to help me correct this.
Currently, this project's JSON printer produces complex and deeply nested json for extensions (as per the standard). It would be nice if the printer produced a simpler JSON, for i.e. clients that were willing to accept non-standard FHIR.
One could imagine running the standard protobuf json printer to simplify printing of extensions, but then again the overall JSON becomes more complex (with lots of nested "value").
I am trying to send FHIR patient example as request to a grpc server. I generated typescript files using proto files.
When I send below FHIR patient example as request , I am getting following error
{ code: 13, details: '.google.fhir.r4.core.Id: object expected', metadata: Metadata { internalRepr: Map(2) { 'content-type' => [Array], 'date' => [Array] }, options: {} }, progress: 'PROCESSED' }
Is the example I am sending is in the right format. If not what is the expected format can you provide any example?
FHIR Patient example
resourceType: "Patient",
id: "27343",
name: [
{
use: "official",
family: "Pataskii",
given: ["Pata", ""],
text: "Pata Pataskii",
},
],
communication: [
{
language: {
coding: [
{
system: "http://hl7.org/fhir/ValueSet/all-languages",
},
],
},
},
],
address: [
{
line: ["Test", ""],
city: "TEST CITY",
state: "CA",
postalCode: "78987",
country: "US",
},
],
birthDate: "2009-08-09",
gender: "Male",
maritalStatus: {
coding: [
{
system: "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
code: "S",
display: "Never Married",
},
],
},
generalPractitioner: [
{
reference: "Practitioner/117",
},
],
contact: [
{
name: {},
relationship: [
{
coding: [
{
system:
"http://terminology.hl7.org/3.1.0/CodeSystem-v2-0131.html",
code: "EP",
},
],
},
],
telecom: [
{
system: "phone",
use: "home",
},
{
system: "phone",
use: "mobile",
},
],
extension: [],
},
],
extension: [],
identifier: [
{
type: {
text: "ssn",
coding: [
{
system: "http://terminology.hl7.org/CodeSystem/v2-0203",
code: "SS",
},
],
},
system: "http://hl7.org/fhir/sid/us-ssn",
value: "",
},
{
type: {
text: "drivers license",
coding: [
{
system: "http://terminology.hl7.org/CodeSystem/v2-0203",
code: "DL",
},
],
},
period: {},
use: "official",
assigner: {},
},
],
telecom: [
{
system: "phone",
value: "8765434560",
use: "home",
},
{
system: "phone",
value: "8765678767",
use: "work",
},
{
extension: [],
system: "phone",
value: "8765434567",
use: "mobile",
},
{
extension: [],
system: "email",
value: "[email protected]",
},
],
contained: [],
}
Hello, I'm working with python and I've been trying to figure out if there's a way to make print_fhir_to_json_string_for_analytics
export nested extension fields to their own fields. (Currently just creates a list and adds just the extension URLs inside)
I thought that If I created a custom profile and defined my extensions there it would work but it still doesn't.
Currently, google-fhir requires Python 3.7 or 3.8. With 3.9 out in production, what would it take to support it?
Thank you!
Do you know any FHIR commercial server available with exposed apis? On prem/cloud?
Right now consuming the gen_fhir_definitions_and_protos
rule is difficult for a project already using java/kotlin + maven deps as the maven install is unnamed and there is no exposing of the deps via a list of something of the like (which can be consumed via the project's own maven_install
). This makes it only possible to manually copy the deps by hand, which is obviously error prone.
It would be really helpful to either expose the maven deps list (for example how grpc-java does it ), or maybe offer the ability to provide a custom maven install name.
Apologies if there is a way to do this I'm missing. Thanks for a great library!
I found that packages, say github.com/google/fhir/go/proto/google/fhir/proto/annotations_go_proto
, are placed in submodule github.com/google/fhir/go
instead of root module.
However, it seems that submodule github.com/google/fhir/go
is not tagged. According to go docs, submodule should be tagged like relative-path-to-root/vX.X.X
.
At now, when trying to import package github.com/google/fhir/go/proto/google/fhir/proto/annotations_go_proto
, downstream would depends on pseudo-version of module github.com/google/fhir/go
.
github.com/google/fhir/go v0.0.0-20230201040735-41722f15f676
I think it is not very readable and difficult to upgrade. This is not conductive to version control either.
So, I propose whether it is possible to tag submodule properly. For example, go/v0.0.1
, go/v0.7.4
etc, so that other project can use tag to import this module in go.mod.
Currently the imports in the jsonformat go package require consumers to also be using bazel. It would be nice if this implementation was directly consumable (as in, via go modules)
If you aren't planning on supporting this, please let me as we will try a go mod hack or begrudgingly maintain a fork ๐
We're maintaining some custom resource validation code that we'd love to deprecate in favor of profiling support in this codebase.
Can you give an estimate on when we might see profiling+validation support for go in this repo?
The GoalAchievementStatus
code system is defined as part of R4 and is the preferred binding for the Goal.achievementStatus
element. However, no protos are generated for it in this repo.
The JSON spec IS included in the repo here:
Other Goal code systems are properly included, e.g. GoalLifecycleStatusCode
:
fhir/proto/google/fhir/proto/r4/core/codes.proto
Lines 1894 to 1896 in bc3fe21
Another idea I had was that maybe this code system maturity was below some kind of filter used in this repo. It is considered 0 - Draft
so that may make sense. However, the GoalAcceptanceState
code system is also 0 - Draft
and it is included:
fhir/proto/google/fhir/proto/r4/core/codes.proto
Lines 1880 to 1882 in bc3fe21
Does anyone know if this was intentional or a bug?
There are some gcc specific copts in the BUILD files. If I remove them I get errors like error C2491: 'antlr4::dfa::Vocabulary::EMPTY_VOCABULARY': definition of dllimport static data member not allowed
and the build fails.
Is building this project under Windows using MSVC supported. Does anyone have any pointers how to make it work?
If I try to build e.g. the r4 json_format C++ library using bazel build //cc/google/fhir/r4:json_format
I get the following errors
PS C:\git\fhir> bazel build //cc/google/fhir/r4:json_format
INFO: Analyzed target //cc/google/fhir/r4:json_format (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
ERROR: C:/users/mathias.kogler/_bazel_mathias.kogler/ee5vwmtg/external/antlr_cc_runtime/BUILD.bazel:3:11: Compiling atn/LL1Analyzer.cpp failed: (Exit 2): cl.exe failed: error executing command C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\cl.exe /nologo /DCOMPILER_MSVC /DNOMINMAX /D_WIN32_WINNT=0x0601 /D_CRT_SECURE_NO_DEPRECATE ... (remaining 40 arguments skipped)
cl : Command line error D8021 : invalid numeric argument '/Wno-implicit-fallthrough'
Target //cc/google/fhir/r4:json_format failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 0.672s, Critical Path: 0.19s
INFO: 13 processes: 13 internal.
FAILED: Build did NOT complete successfully
If I remove the -Wno-implicit-falltrough
from the copts
in bazel/antlr.BUILD and change the -cxxopt
in .bazelrc
from build --cxxopt=-std=c++17
to the msvc format build --cxxopt=/std:c++17
I get the following errors
PS C:\git\fhir> bazel build //cc/google/fhir/r4:json_format
INFO: Build option --cxxopt has changed, discarding analysis cache.
INFO: Analyzed target //cc/google/fhir/r4:json_format (0 packages loaded, 3011 targets configured).
INFO: Found 1 target...
ERROR: C:/users/mathias.kogler/_bazel_mathias.kogler/ee5vwmtg/external/antlr_cc_runtime/BUILD.bazel:3:11: Compiling Vocabulary.cpp failed: (Exit 2): cl.exe failed: error executing command C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\cl.exe /nologo /DCOMPILER_MSVC /DNOMINMAX /D_WIN32_WINNT=0x0601 /D_CRT_SECURE_NO_DEPRECATE ... (remaining 39 arguments skipped)
cl : Command line warning D9002 : ignoring unknown option '-fexceptions'
external/antlr_cc_runtime/Vocabulary.cpp(12): warning C4273: 'EMPTY_VOCABULARY': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(27): note: see previous definition of 'public: static antlr4::dfa::Vocabulary const antlr4::dfa::Vocabulary::EMPTY_VOCABULARY'
external/antlr_cc_runtime/Vocabulary.cpp(12): error C2491: 'antlr4::dfa::Vocabulary::EMPTY_VOCABULARY': definition of dllimport static data member not allowed
external/antlr_cc_runtime/Vocabulary.cpp(14): warning C4273: 'antlr4::dfa::Vocabulary::Vocabulary': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(42): note: see previous definition of '{ctor}'
external/antlr_cc_runtime/Vocabulary.cpp(18): warning C4273: 'antlr4::dfa::Vocabulary::Vocabulary': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(60): note: see previous definition of '{ctor}'
external/antlr_cc_runtime/Vocabulary.cpp(25): warning C4273: 'antlr4::dfa::Vocabulary::~Vocabulary': inconsistent
dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(18): note: see previous definition of '{dtor}'
external/antlr_cc_runtime/Vocabulary.cpp(28): warning C4273: 'antlr4::dfa::Vocabulary::fromTokenNames': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(76): note: see previous definition of 'fromTokenNames'
external/antlr_cc_runtime/Vocabulary.cpp(61): warning C4273: 'antlr4::dfa::Vocabulary::getMaxTokenType': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(82): note: see previous definition of 'getMaxTokenType'
external/antlr_cc_runtime/Vocabulary.cpp(65): warning C4273: 'antlr4::dfa::Vocabulary::getLiteralName': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(119): note: see previous definition of 'getLiteralName'
external/antlr_cc_runtime/Vocabulary.cpp(73): warning C4273: 'antlr4::dfa::Vocabulary::getSymbolicName': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(163): note: see previous definition of 'getSymbolicName'
external/antlr_cc_runtime/Vocabulary.cpp(85): warning C4273: 'antlr4::dfa::Vocabulary::getDisplayName': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\Vocabulary.h(184): note: see previous definition of 'getDisplayName'
ERROR: C:/users/mathias.kogler/_bazel_mathias.kogler/ee5vwmtg/external/antlr_cc_runtime/BUILD.bazel:3:11: Compiling atn/ATNDeserializationOptions.cpp failed: (Exit 2): cl.exe failed: error executing command C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\cl.exe /nologo /DCOMPILER_MSVC /DNOMINMAX /D_WIN32_WINNT=0x0601 /D_CRT_SECURE_NO_DEPRECATE ... (remaining 39 arguments skipped)
cl : Command line warning D9002 : ignoring unknown option '-fexceptions'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(10): warning C4273: 'defaultOptions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(15): note: see previous definition of 'private: static antlr4::atn::ATNDeserializationOptions antlr4::atn::ATNDeserializationOptions::defaultOptions'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(10): error C2491: 'antlr4::atn::ATNDeserializationOptions::defaultOptions': definition of dllimport static data member not allowed
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(12): warning C4273: 'antlr4::atn::ATNDeserializationOptions::ATNDeserializationOptions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(22): note: see previous definition of '{ctor}'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(16): warning C4273: 'antlr4::atn::ATNDeserializationOptions::ATNDeserializationOptions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(23): note: see previous definition of '{ctor}'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(21): warning C4273: 'antlr4::atn::ATNDeserializationOptions::~ATNDeserializationOptions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(25): note: see previous definition of '{dtor}'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(24): warning C4273: 'antlr4::atn::ATNDeserializationOptions::getDefaultOptions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(28): note: see previous definition of 'getDefaultOptions'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(28): warning C4273: 'antlr4::atn::ATNDeserializationOptions::isReadOnly': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(30): note: see previous definition of 'isReadOnly'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(32): warning C4273: 'antlr4::atn::ATNDeserializationOptions::makeReadOnly': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(32): note: see previous definition of 'makeReadOnly'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(36): warning C4273: 'antlr4::atn::ATNDeserializationOptions::isVerifyATN': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(34): note: see previous definition of 'isVerifyATN'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(40): warning C4273: 'antlr4::atn::ATNDeserializationOptions::setVerifyATN': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(36): note: see previous definition of 'setVerifyATN'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(45): warning C4273: 'antlr4::atn::ATNDeserializationOptions::isGenerateRuleBypassTransitions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(38): note: see previous definition of 'isGenerateRuleBypassTransitions'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(49): warning C4273: 'antlr4::atn::ATNDeserializationOptions::setGenerateRuleBypassTransitions': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(40): note: see previous definition of 'setGenerateRuleBypassTransitions'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(54): warning C4273: 'antlr4::atn::ATNDeserializationOptions::throwIfReadOnly': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(43): note: see previous definition of 'throwIfReadOnly'
external/antlr_cc_runtime/atn/ATNDeserializationOptions.cpp(60): warning C4273: 'antlr4::atn::ATNDeserializationOptions::InitializeInstanceFields': inconsistent dll linkage
C:\users\mathias.kogler\_bazel_mathias.kogler\ee5vwmtg\execroot\com_google_fhir\external\antlr_cc_runtime\atn/ATNDeserializationOptions.h(46): note: see previous definition of 'InitializeInstanceFields'
Target //cc/google/fhir/r4:json_format failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 3.173s, Critical Path: 2.43s
INFO: 15 processes: 11 internal, 4 local.
FAILED: Build did NOT complete successfully
Hey Team,
I am trying to use the repo and scripts to generate protos from my custom Implementation guide.
I am trying to follow the guidelines mentioned in this link: https://github.com/google/fhir-examples/blob/master/USERGUIDE.md#generating-protos-from-profiles
As an example I am trying to use the "US Core protos:" example., which seem to be failing for bullet points: 3(link is broken) and 4 with the following error (this was updating the command to: generate_protos.sh //proto/google/fhir/proto/r4:uscore)
ERROR: Skipping 'proto/google/fhir/proto/r4:uscore_proto_files': no such target '//proto/google/fhir/proto/r4:uscore_proto_files': target 'uscore_proto_files' not declared in package 'proto/google/fhir/proto/r4' (did you mean 'uscore_proto_zip'?) defined by /usr/local/google/home/guptarju/google-fhir/fhir/proto/google/fhir/proto/r4/BUILD
WARNING: Target pattern parsing failed.
ERROR: no such target '//proto/google/fhir/proto/r4:uscore_proto_files': target 'uscore_proto_files' not declared in package 'proto/google/fhir/proto/r4' (did you mean 'uscore_proto_zip'?) defined by /usr/local/google/home/guptarju/google-fhir/fhir/proto/google/fhir/proto/r4/BUILD
INFO: Elapsed time: 0.220s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)
Build Failed: proto/google/fhir/proto/r4:uscore_proto_files```
Is there any update guide? Which could be referenced or the content within this file be updated
Hi, Is there a plan to write an unmarshaller for R5 version. I currently see the unmarshaller is available for R4, R3. If the plan is not in near future, can you guide me on how to generate the unmarshaller. I would like to tweak the code base and add the functionality.
I'm getting this warning (even though it looks like an error) about the new PIP dependency resolver.
ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.
We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.
google-fhir 0.6.2 requires protobuf==3.13.0, but you'll have protobuf 3.14.0 which is incompatible.
I can see that the requirements are set exactly: https://github.com/google/fhir/blob/master/py/requirements.txt For a library, would it be better to do something like this?
absl-py >= 0.10.0 < 0.11.0
backports.zoneinfo >= 0.2.1 < 0.3.0
mypy-protobuf >= 1.23 < 2
protobuf >= 3.13.0 < 4
python-dateutil >= 2.8.1 < 3
six >= 1.15.0 < 2
(I haven't tested those exactly, it's just speculation and assuming those are all semver.)
Thank you!
adding a function to get ContainedResource by passing a resource type.
Example GetContainedResource(Patient) to return Patient.
fhir/go/proto/google/fhir/proto/r4/core/resources/bundle_and_contained_resource_go_proto/bundle_and_contained_resource.pb.go
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.