Describe it
| Field | Value |
|---|---|
| Patient Name | Mr. Rohit |
| UHID No. | 5008 |
| IP No. | 883 |
| Age | 29 years |
| Sex | Male |
| Anesthesia Type | Brachial Block |
"A lateral S-shaped skin incision for lateral approach to elbow. Subcutaneous dissection then made between the tissue. Small comminuted fragments excised and (partial radial head excised). Radius found stable and elbow ROM increased using arthrolysis. Wound washed and closed in layers. ASD done.""Post-op distal neurovascular status found intact."
| Role | Name |
|---|---|
| Surgeon | Dr. Aashrya Mali |
| Anesthesiologist | Dr. Megha |
| Scrub Nurse | Happy |
Create a summary document of this surgical procedure
mkdir -p /home/daytona/workspace/surgical-summary && ls /home/daytona/workspace/surgical-summary/
~/surgical-summary/create_doc.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, VerticalAlign,
ShadingType
} = require('docx');
const fs = require('fs');
// --- Helpers ---
function heading1(text) {
return new Paragraph({
text,
heading: HeadingLevel.HEADING_1,
spacing: { before: 300, after: 120 },
});
}
function heading2(text) {
return new Paragraph({
text,
heading: HeadingLevel.HEADING_2,
spacing: { before: 200, after: 80 },
});
}
function body(text, bold = false) {
return new Paragraph({
children: [new TextRun({ text, bold, size: 22 })],
spacing: { after: 80 },
});
}
function labelValue(label, value) {
return new Paragraph({
children: [
new TextRun({ text: label + ': ', bold: true, size: 22 }),
new TextRun({ text: value, size: 22 }),
],
spacing: { after: 80 },
});
}
function emptyLine() {
return new Paragraph({ text: '', spacing: { after: 80 } });
}
// Table helper: array of [label, value] pairs
function infoTable(rows) {
const tableRows = rows.map(([label, value]) =>
new TableRow({
children: [
new TableCell({
children: [new Paragraph({
children: [new TextRun({ text: label, bold: true, size: 22 })],
})],
width: { size: 35, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, fill: 'E8F0FE' },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
}),
new TableCell({
children: [new Paragraph({
children: [new TextRun({ text: value, size: 22 })],
})],
width: { size: 65, type: WidthType.PERCENTAGE },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
}),
],
})
);
return new Table({
rows: tableRows,
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 1, color: 'AAAAAA' },
bottom: { style: BorderStyle.SINGLE, size: 1, color: 'AAAAAA' },
left: { style: BorderStyle.SINGLE, size: 1, color: 'AAAAAA' },
right: { style: BorderStyle.SINGLE, size: 1, color: 'AAAAAA' },
insideH: { style: BorderStyle.SINGLE, size: 1, color: 'CCCCCC' },
insideV: { style: BorderStyle.SINGLE, size: 1, color: 'CCCCCC' },
},
});
}
// --- Document ---
const doc = new Document({
styles: {
paragraphStyles: [
{
id: 'Heading1',
name: 'Heading 1',
basedOn: 'Normal',
next: 'Normal',
run: { bold: true, size: 28, color: '1A3A6B' },
paragraph: { spacing: { before: 300, after: 120 } },
},
{
id: 'Heading2',
name: 'Heading 2',
basedOn: 'Normal',
next: 'Normal',
run: { bold: true, size: 24, color: '2E6DA4' },
paragraph: { spacing: { before: 200, after: 80 } },
},
],
},
sections: [
{
properties: {
page: {
margin: { top: 1000, bottom: 1000, left: 1200, right: 1200 },
},
},
children: [
// ── HEADER BLOCK ──
new Paragraph({
children: [new TextRun({ text: 'OSCAR MEDICAL CENTER', bold: true, size: 36, color: '1A3A6B' })],
alignment: AlignmentType.CENTER,
spacing: { after: 60 },
}),
new Paragraph({
children: [new TextRun({ text: 'आम आदमी का अस्पताल', size: 22, color: '555555' })],
alignment: AlignmentType.CENTER,
spacing: { after: 60 },
}),
new Paragraph({
children: [new TextRun({ text: 'Sector-25, Panchkula | Tel: 90538-93331', size: 20, color: '555555' })],
alignment: AlignmentType.CENTER,
spacing: { after: 200 },
}),
// Title
new Paragraph({
children: [new TextRun({ text: 'SURGICAL PROCEDURE SUMMARY', bold: true, size: 30, color: 'FFFFFF' })],
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: '1A3A6B' },
spacing: { before: 100, after: 100 },
indent: { left: 0, right: 0 },
}),
emptyLine(),
// ── SECTION 1: Patient Details ──
heading1('1. Patient Information'),
infoTable([
['Patient Name', 'Mr. Rohit'],
['UHID No.', '5008'],
['IP No.', '883'],
['Age', '29 Years'],
['Sex', 'Male'],
['Blood Group', 'Not recorded'],
['Anesthesia Type', 'Brachial Block'],
]),
emptyLine(),
// ── SECTION 2: Operative Details ──
heading1('2. Operative Details'),
infoTable([
['Date of Operation', '19 July 2026'],
['Pre-operative Diagnosis', 'Fracture Radial Head (Left) - Closed'],
['Operation Proposed', 'Radial Head Excision + Arthrolysis of Elbow'],
]),
emptyLine(),
// ── SECTION 3: Procedure Description ──
heading1('3. Operative Procedure'),
body(
'A lateral S-shaped skin incision was made for a lateral approach to the left elbow. ' +
'Subcutaneous dissection was then carried out between the tissue planes. ' +
'Small comminuted bone fragments were identified and excised. A partial radial head excision was performed. ' +
'The radius was found to be stable following excision. ' +
'Arthrolysis was performed, which resulted in an increased range of motion (ROM) at the elbow. ' +
'The wound was thoroughly washed and closed in layers. An ASD (Antiseptic Sterile Dressing) was applied.'
),
emptyLine(),
// ── SECTION 4: Intraoperative Findings ──
heading1('4. Intraoperative Findings'),
body('- Comminuted fracture fragments at the left radial head.'),
body('- Radius found stable after partial radial head excision.'),
body('- Elbow range of motion improved after arthrolysis.'),
body('- Post-operative distal neurovascular status: Intact (no vascular or nerve injury).'),
emptyLine(),
// ── SECTION 5: Surgical Approach ──
heading1('5. Surgical Approach & Technique'),
labelValue('Approach', 'Lateral (Kocher\'s approach) to the elbow'),
labelValue('Incision', 'Lateral S-shaped skin incision'),
labelValue('Key Procedure', 'Partial Radial Head Excision'),
labelValue('Adjunct Procedure', 'Arthrolysis (surgical release to improve ROM)'),
labelValue('Wound Closure', 'Closed in layers with ASD dressing applied'),
emptyLine(),
// ── SECTION 6: Surgical Team ──
heading1('6. Surgical Team'),
infoTable([
['Surgeon', 'Dr. Aashrya Mali'],
['Assistant Surgeon', 'Not recorded'],
['Anesthesiologist', 'Dr. Megha'],
['Scrub Nurse', 'Happy'],
]),
emptyLine(),
// ── SECTION 7: Post-operative Status ──
heading1('7. Post-operative Status'),
body(
'Post-operatively, the distal neurovascular status of the left upper limb was assessed and found to be intact, ' +
'confirming no injury to the distal nerves or blood vessels during the procedure.'
),
emptyLine(),
// ── SECTION 8: Clinical Notes ──
heading1('8. Clinical Notes'),
body(
'Radial head fractures are among the most common elbow fractures in adults. ' +
'Comminuted radial head fractures that are not amenable to fixation are typically managed with radial head excision. ' +
'Arthrolysis is performed concurrently when elbow stiffness (limited ROM) is present intraoperatively. ' +
'A brachial block (regional anesthesia) was used, which is standard for upper limb procedures and avoids general anesthesia risks.'
),
emptyLine(),
// Footer note
new Paragraph({
children: [
new TextRun({ text: 'Document generated from operation notes dated 19/07/2026 | Oscar Medical Center, Panchkula', size: 18, color: '888888', italics: true }),
],
alignment: AlignmentType.CENTER,
spacing: { before: 400 },
}),
],
},
],
});
Packer.toBuffer(doc).then((buffer) => {
fs.writeFileSync('/home/daytona/workspace/surgical-summary/Surgical_Summary_Mr_Rohit.docx', buffer);
console.log('Document created successfully.');
});
cd /home/daytona/workspace/surgical-summary && node create_doc.js
ls -lh /home/daytona/workspace/surgical-summary/Surgical_Summary_Mr_Rohit.docx && python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/surgical-summary/Surgical_Summary_Mr_Rohit.docx
cd /home/daytona/workspace/surgical-summary && python3 -c "import zipfile; z=zipfile.ZipFile('Surgical_Summary_Mr_Rohit.docx'); print('\n'.join(z.namelist()))"
Surgical Summary Mr Rohit
Word Document · DOCX