FHIR uses vocabulary bindings to identify which codes to use for which elements. However, at the international level, most of those bindings are "preferred" or "example" bindings - which means that there's no agreement internationally on what code system(s) to use. For example, for diagnosis codes, some systems might use SNOMED, others ICD10, others ICD9 and others something else. We can only dictate the choice of codes at the international level when there's consensus.
So for many attributes, you need to look to country-specific or implementation-specific profiles to define what code system(s) should be used. Even within a country, the codes used for procedures might differ for a dentistry system or a veterinary system or a chiropractor's system from what you'd find in an in-patient human surgical system.
The type of resource therefore isn't going to be driven by what code system you're using. The type of resource is going to be driven by the type of data you're using. If you have a clinical finding and want to capture a boolean to indicates the presence or absence of the finding, then that means you'll need to expose your data as an Observation. But in FHIR, not everyone will express that same fact the same way. Others might use Condition. And others will use a code system other than SNOMED.