- The Tool / Application can be used to generate report files in a selected folder.
- Its primarily used for generating score reports for the NCC examination.
- The Co-sponsor boards ABA, ABIM and ABEM want these score reports to be uploaded in their system and they can request a specific format as per their report naming convention ( Or maybe a tool they use to upload these files in their own databases)
The tool resides at this location in the GIT source control.

For example- GenerateABIMReports() method , has the file format specified.
File.WriteAllBytes(String.Format(@"\ABIM\ABIM_{0}.pdf",obj.SourcePhysicianId), obj.Document);And we need to specify the name of the method in the driver method when we execute the application.
static void Main(string[] args)
{
try
{
var listener = Task.Run(() => GenerateABIMReports());
listener.Wait();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}The method definition for ABIM report - (This method can also be used for ABEM as their formats are similar)
We only need to change the board id = 7
private static void GenerateABIMReports()
{
try {
using var dbContext = new BoardCertDbContext();
try
{
// change examination_key and document type Id according to the exam required
var otherBoardExaminee = (from ex in dbContext.Set<Examinee>()
join obe in dbContext.Set<OtherBoardExaminee>() on ex.OtherBoardExamineeId equals obe.OtherBoardExamineeId
join obp in dbContext.Set<OtherBoardPhysician>() on obe.OtherBoardPhysicianId equals obp.OtherBoardPhysicianId
join ed in dbContext.Set<ExamineeDocument>() on ex.ExamineeId equals ed.ExamineeId
where obe.Examination_Key == 1389 && obp.BoardId == 5 && ed.ExamineeDocumentTypeId == 5
select new
{
ex.ExamineeId,
ed.Document,
obp.SourcePhysicianId
}
);
foreach(var obj in otherBoardExaminee)
{
// change name of file and directory as required
File.WriteAllBytes(String.Format(@"\ABEM\ABEM_{0}.pdf",obj.SourcePhysicianId), obj.Document);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine($"files generated");
}
The method definition for ABA report -
private static void GenerateABAReports()
{
try
{
using var dbContext = new BoardCertDbContext();
try
{
// change examination_key and document type Id according to the exam required
var otherBoardExaminee = (from ex in dbContext.Set<Examinee>()
join obe in dbContext.Set<OtherBoardExaminee>() on ex.OtherBoardExamineeId equals obe.OtherBoardExamineeId
join obp in dbContext.Set<OtherBoardPhysician>() on obe.OtherBoardPhysicianId equals obp.OtherBoardPhysicianId
join ed in dbContext.Set<ExamineeDocument>() on ex.ExamineeId equals ed.ExamineeId
where obe.Examination_Key == 1389 && obp.BoardId == 2 && ed.ExamineeDocumentTypeId == 5
select new
{
ex.ExamineeId,
ed.Document,
obp.SourcePhysicianId
}
);
foreach (var obj in otherBoardExaminee)
{
// change name of file and directory as required
File.WriteAllBytes(String.Format(@"\ABA\PR_NCC1024_01-13-24_{0}.pdf", obj.SourcePhysicianId), obj.Document);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine($"files generated");
}