...
Check Compositions with such id exists in patients collection
in case of error - Return 404 ('Composition is not _ found')
Validate query parameter
form_type
=INFO_CERTIFICATE corresponds to appropriate dictionary COMPOSITION_PRINTFORM_CODESin case of error - Return 404 ('Form 'value is not allowed in enum')
Validate that in this method is allowed such
form_type
get config parameter COMPOSITION_PRINTFORM_ALLOW_CODES
in condition array find condition that corresponds query parameter
form_type
in check array must be filled “
MIS
“ - itemin case of error - Return 409 ('Requested form type is not availableallowed')
Service logic
Define template id
Get Composition by id from ME
Get template id from configuration based on Composition.type and form_type:
COMPOSITION_{{Composition.type}}_{{form_type}}_TEMPLATE_ID (ex. COMPOSITION_ADOPTION_INFO_CERTIFICATE_TEMPLATE_ID)
Prepare request parameters for MAN based on mapping bellow
Add
display
for codeable concept elements where it says enrich with display valueGet dictionary value by dictionary key from corresponding dictionary
Set dictionary value as coding[].display for this element
Call Render Template(MAN) to render printout form
Return response with generated pdf to the client
...
MAN Request parameter | Source value |
---|---|
Сomposition | Select Composition from ME by id = composition_id from the request |
Composition.type | ME.composition.type (enrich with display value) |
Composition.category | ME.composition.category (enrich with display value) |
Composition.date | ME.composition.date (cast datetime to date only) |
Composition.title | ME.composition.title |
Composition.event | ME.composition.event[].code (enrich ME.composition.event[].code with display value) |
Composition.extension | ME.composition.extension (enrich composition.extension[].code, enrich composition.extension[].valueCodeableConcept.coding[].code with display value) |
Employee | Select Employee from PRM by id = Composition.author.attester.[0].party.identifier.value |
Employee.id | PRM.employee.id |
Employee.position | PRM.employee.position (enrich with display value) |
Party | Select Party from PRM by id = Employee.party_id |
Party.last_name | PRM.party.last_name |
Party.first_name | PRM.party.first_name |
Party.second_name | PRM.party.second_name |
Legal_entity | Select Legal Entity from PRM by id = Composition.custodian.identifier.value |
Legal_entity.name | PRM.legal_entity.name |
Legal_entity.edrpou | PRM.legal_entity.edrpou |
Person | Select Person from MPI by id = patient_id from request |
Person.id | Person.id |
Person.last_name | PRM.person.last_name |
Person.first_name | PRM.person.first_name |
Person.second_name | PRM.person.second_name |
Person.tax_id | PRM.person.tax_id |
Person.unzr | PRM.person.unzr |
Person.birth_date | PRM.person.birth_date |
...