How to represent a piece of software as a Device?

We are building software modules that will take FHIR resource(s) and use them to modify or create other resource(s), for example one module might take in a QuestionnaireResponse about the patient’s medical conditions and create a new Condition corresponding to the patient’s responses. I need to write a Provenance resource recording the transformation, so Provenance.target would be the Condition and Provenance.entity.what would be the QuestionnaireResponse. Provenance.agent.who should be a Device, but there’s no device in this case, only software, so it’s not clear how to represent that as a Device.

For example, should we put all the information related to the software in Device? Or just version information in Device, and more detailed information in DeviceDefinition? If the module ran with config inputs, should those be encoded as multiple Device.property elements or a text dump into Device.note?

So are there any existing profiles or conventions for representing software as a Device?

In FHIR, software is considered to be a device. There is no standard profile, as how much/what you choose to represent may vary. Some systems will capture an identifier and nothing else, others will capture much more. Capturing configuration information is uncommon, but either option you described is possible. Using ‘property’ is more work, but also more computable.