Something like this example?
http://hl7.org/fhir/R4/allergyintolerance-fishallergy.json.html

{
  "resourceType": "AllergyIntolerance",
  "id": "fishallergy",
  "text": {
    "status": "additional",
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n      <p>allergy is to fresh fish. Tolerates canned fish</p>\n      <p>recordedDate:2015-08-06T00:00:00-06:00</p>\n      <p>substance:Fish - dietary (substance)</p>\n    </div>"
  },
  "identifier": [
    {
      "system": "http://acme.com/ids/patients/risks",
      "value": "49476535"
    }
  ],
  "clinicalStatus": {
    "coding": [
      {
        "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical",
        "code": "active",
        "display": "Active"
      }
    ]
  },
  "verificationStatus": {
    "coding": [
      {
        "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification",
        "code": "confirmed",
        "display": "Confirmed"
      }
    ]
  },
  "category": [
    "food"
  ],
  "code": {
    "coding": [
      {
        "system": "http://snomed.info/sct",
        "code": "227037002",
        "display": "Fish - dietary (substance)"
      }
    ],
    "text": "Allergic to fresh fish. Tolerates canned fish"
  },
  "patient": {
    "reference": "Patient/example"
  },
  "recordedDate": "2015-08-06T15:37:31-06:00",
  "recorder": {
    "reference": "Practitioner/example"
  }
}

Well, I'll answer you from my experience, maybe I'm wrong.

About your first question, you are totally free to use a encoded BP or BPL and DTL, as you prefer. I usually prefer to use BP by code for custom objects and DTL and BPL when I work with HL7 messages...why? because I'm too lazy to write code foreach transformation of field in an HL7 message.

The Business Service used by the RecordMapper has a property called Synchronous Send:

 

When you check it the Business Service is going to send the record mapped in a sync call to your BP, so it's not going to read a new line of the file until a response is received from the destination.

About the OnRespone, you can check the official documentation: https://docs.intersystems.com/iris20231/csp/docbook/DocBook.UI.Page.cls?...

I usually implement the OnResponse to receive Async responses from Business Operations called by my BP, in your case I think that it's unnecessary, but this is a personal opinion.

I don't think that is possible out of the context of a production, at the end the destination of the routed message is always a business component deployed in a production, the context info and the messages are linked to components of the productions too. 

I think that is easier to learn objectscript than try to adapt the behavior of the business rules.