| CONSOLIDATED STATEMENTS OF CHANGES IN STOCKHOLDERS' EQUITY - USD ($)
 | Total | Common Stock | Additional Paid-In Capital | Treasury Stock | Accumulated Deficit | 
| Beginning balance at Apr. 30, 2019 | $ 26,461,428 | $ 18,666 | $ 68,562,727 | $ (70,000) | $ (42,049,965) | 
| Beginning balance (in shares) at Apr. 30, 2019 | Ìý | 18,665,551 | Ìý | Ìý | Ìý | 
| Increase (Decrease) in Stockholders' Equity [Roll Forward] | Ìý | Ìý | Ìý | Ìý | Ìý | 
| Stock-based compensation | 889,484 | Ìý | 889,484 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash | 237,713 | $ 113 | 237,600 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash (in shares) | Ìý | 112,826 | Ìý | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised | 0 | $ 182 | (182) | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised (in shares) | Ìý | 182,207 | Ìý | Ìý | Ìý | 
| Common stock issued for cashless warrant exercise | 0 | $ 77 | (77) | Ìý | Ìý | 
| Common stock issued for cashless warrant exercise (in shares) | Ìý | 76,929 | Ìý | Ìý | Ìý | 
| Amortization of warrant based cost | 18,565 | Ìý | 18,565 | Ìý | Ìý | 
| Amortization of restricted stock issued for services | 73,350 | Ìý | 73,350 | Ìý | Ìý | 
| Restricted Stock Issued for Services, subject to vesting | 0 | $ 104 | (104) | Ìý | Ìý | 
| Restricted Stock Issued for Services, subject to vesting (in shares) | Ìý | 104,803 | Ìý | Ìý | Ìý | 
| Net loss | (2,713,450) | Ìý | Ìý | Ìý | (2,713,450) | 
| Ending balance at Oct. 31, 2019 | 24,967,090 | $ 19,142 | 69,781,363 | (70,000) | (44,763,415) | 
| Ending balance (in shares) at Oct. 31, 2019 | Ìý | 19,142,316 | Ìý | Ìý | Ìý | 
| Beginning balance at Jul. 31, 2019 | 24,969,790 | $ 18,914 | 69,146,123 | (70,000) | (44,125,247) | 
| Beginning balance (in shares) at Jul. 31, 2019 | Ìý | 18,913,527 | Ìý | Ìý | Ìý | 
| Increase (Decrease) in Stockholders' Equity [Roll Forward] | Ìý | Ìý | Ìý | Ìý | Ìý | 
| Stock-based compensation | 391,067 | Ìý | 391,067 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash | 192,522 | $ 90 | 192,432 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash (in shares) | Ìý | 90,950 | Ìý | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised | 0 | $ 80 | (80) | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised (in shares) | Ìý | 80,313 | Ìý | Ìý | Ìý | 
| Common stock issued for cashless warrant exercise | 0 | $ 58 | (58) | Ìý | Ìý | 
| Common stock issued for cashless warrant exercise (in shares) | Ìý | 57,526 | Ìý | Ìý | Ìý | 
| Amortization of warrant based cost | 9,125 | Ìý | 9,125 | Ìý | Ìý | 
| Amortization of restricted stock issued for services | 42,754 | Ìý | 42,754 | Ìý | Ìý | 
| Net loss | (638,168) | Ìý | Ìý | Ìý | (638,168) | 
| Ending balance at Oct. 31, 2019 | 24,967,090 | $ 19,142 | 69,781,363 | (70,000) | (44,763,415) | 
| Ending balance (in shares) at Oct. 31, 2019 | Ìý | 19,142,316 | Ìý | Ìý | Ìý | 
| Beginning balance at Apr. 30, 2020 | 41,747,957 | $ 21,771 | 89,505,216 | (70,000) | (47,709,030) | 
| Beginning balance (in shares) at Apr. 30, 2020 | Ìý | 21,770,520 | Ìý | Ìý | Ìý | 
| Increase (Decrease) in Stockholders' Equity [Roll Forward] | Ìý | Ìý | Ìý | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash | 1,269,982 | Ìý | Ìý | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash (in shares) | Ìý | 415,175 | Ìý | Ìý | Ìý | 
| Common stock issued for warrants exercised for cash | $ 1,081,792 | Ìý | Ìý | Ìý | Ìý | 
| Common stock issued for warrants exercised for cash (in shares) | 192,049 | Ìý | Ìý | Ìý | Ìý | 
| Ending balance at Jul. 31, 2020 | $ 43,678,736 | $ 22,378 | 92,378,584 | (70,000) | (48,652,226) | 
| Ending balance (in shares) at Jul. 31, 2020 | Ìý | 22,377,744 | Ìý | Ìý | Ìý | 
| Beginning balance at Apr. 30, 2020 | 41,747,957 | $ 21,771 | 89,505,216 | (70,000) | (47,709,030) | 
| Beginning balance (in shares) at Apr. 30, 2020 | Ìý | 21,770,520 | Ìý | Ìý | Ìý | 
| Increase (Decrease) in Stockholders' Equity [Roll Forward] | Ìý | Ìý | Ìý | Ìý | Ìý | 
| Stock-based compensation | 2,318,658 | Ìý | 2,318,658 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash | 2,215,315 | $ 918 | 2,214,397 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash (in shares) | Ìý | 917,587 | Ìý | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised | 0 | $ 22 | (22) | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised (in shares) | Ìý | 22,339 | Ìý | Ìý | Ìý | 
| Common stock issued for conversion of Convertible Notes | 10,000,000 | $ 1,399 | 9,998,601 | Ìý | Ìý | 
| Common stock issued for conversion of Convertible Notes (in shares) | Ìý | 1,398,602 | Ìý | Ìý | Ìý | 
| Common stock issued for vested restricted stock units | 0 | $ 132 | (132) | Ìý | Ìý | 
| Common stock issued for vested restricted stock units (in shares) | Ìý | 132,109 | Ìý | Ìý | Ìý | 
| Common stock issued for warrants exercised for cash | 1,081,792 | $ 192 | 1,081,600 | Ìý | Ìý | 
| Common stock issued for warrants exercised for cash (in shares) | Ìý | 192,049 | Ìý | Ìý | Ìý | 
| Modification charge for warrants exercised | 25,966 | Ìý | 25,966 | Ìý | Ìý | 
| Amortization of warrant based cost | 18,250 | Ìý | 18,250 | Ìý | Ìý | 
| Cancellation of Treasury Stock | 0 | $ (17) | (69,983) | 70,000 | Ìý | 
| Cancellation of Treasury Stock (in shares) | Ìý | (16,667) | Ìý | Ìý | Ìý | 
| Net loss | (5,313,721) | Ìý | Ìý | Ìý | (5,313,721) | 
| Ending balance at Oct. 31, 2020 | 52,094,217 | $ 24,417 | 105,092,551 | 0 | (53,022,751) | 
| Ending balance (in shares) at Oct. 31, 2020 | Ìý | 24,416,539 | Ìý | Ìý | Ìý | 
| Beginning balance at Jul. 31, 2020 | 43,678,736 | $ 22,378 | 92,378,584 | (70,000) | (48,652,226) | 
| Beginning balance (in shares) at Jul. 31, 2020 | Ìý | 22,377,744 | Ìý | Ìý | Ìý | 
| Increase (Decrease) in Stockholders' Equity [Roll Forward] | Ìý | Ìý | Ìý | Ìý | Ìý | 
| Stock-based compensation | 1,831,548 | Ìý | 1,831,548 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash | 945,332 | $ 502 | 944,830 | Ìý | Ìý | 
| Common stock issued for stock options exercised for cash (in shares) | Ìý | 502,412 | Ìý | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised | 0 | $ 22 | (22) | Ìý | Ìý | 
| Common stock issued for cashless stock options exercised (in shares) | Ìý | 22,339 | Ìý | Ìý | Ìý | 
| Common stock issued for conversion of Convertible Notes | 10,000,000 | $ 1,399 | 9,998,601 | Ìý | Ìý | 
| Common stock issued for conversion of Convertible Notes (in shares) | Ìý | 1,398,602 | Ìý | Ìý | Ìý | 
| Common stock issued for vested restricted stock units | 0 | $ 132 | (132) | Ìý | Ìý | 
| Common stock issued for vested restricted stock units (in shares) | Ìý | 132,109 | Ìý | Ìý | Ìý | 
| Amortization of warrant based cost | 9,125 | Ìý | 9,125 | Ìý | Ìý | 
| Cancellation of Treasury Stock | 0 | $ (17) | (69,983) | 70,000 | Ìý | 
| Cancellation of Treasury Stock (in shares) | Ìý | (16,667) | Ìý | Ìý | Ìý | 
| Net loss | (4,370,525) | Ìý | Ìý | Ìý | (4,370,525) | 
| Ending balance at Oct. 31, 2020 | $ 52,094,217 | $ 24,417 | $ 105,092,551 | $ 0 | $ (53,022,751) | 
| Ending balance (in shares) at Oct. 31, 2020 | Ìý | 24,416,539 | Ìý | Ìý | Ìý |