print-note.blade.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <!doctype html>
  2. <html lang="en" note-uid="{{$note->uid}}" >
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <meta charset="utf-8">
  9. <meta name="viewport" content="width=device-width, initial-scale=1">
  10. <title>{{ config('app.name') }}</title>
  11. <!-- Fonts -->
  12. <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
  13. <!-- <link href="{{ asset('bootstrap-4.5.0/css/bootstrap.css') }}" rel="stylesheet"> -->
  14. <link rel="stylesheet" href="/fontawesome-free-5.13.1-web/css/all.min.css">
  15. <link href="{{ asset('/css/app.css') }}?v={{config('app.asset_version')}}" rel="stylesheet">
  16. <link href="{{ asset('/css/style.css') }}?v={{config('app.asset_version')}}" rel="stylesheet">
  17. <link href="{{ asset('/css/yemi.css') }}?v={{config('app.asset_version')}}" rel="stylesheet">
  18. <link rel="stylesheet" href="{{ asset('/css/toastr.min.css') }}">
  19. <link href="{{asset('/css/z.css')}}?v={{config('app.asset_version')}}" rel=stylesheet>
  20. <!-- Styles -->
  21. {{-- inline bootstrap datepicker --}}
  22. {{-- <link href='/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css' rel="stylesheet">
  23. <script src='/bootstrap-datepicker/js/bootstrap-datepicker.min.js'></script>--}}
  24. <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  25. <script src="/js/jquery-3.5.1.min.js"></script>
  26. <style>
  27. /** Define the margins of your page **/
  28. @page {
  29. size: letter portrait;
  30. }
  31. @page {
  32. margin: 1cm;
  33. padding: 100px;
  34. @bottom-right {
  35. content: "My book" !important;
  36. font-size: 9pt;
  37. color: #333;
  38. }
  39. }
  40. footer {
  41. bottom: 0;
  42. left: 0;
  43. width: 100%;
  44. display: table-footer-group;
  45. }
  46. .page-number:before {
  47. content: counter(pages);
  48. }
  49. @media print
  50. {
  51. .no-print, .no-print *
  52. {
  53. display: none !important;
  54. }
  55. }
  56. </style>
  57. </head>
  58. <body>
  59. <!--<footer>
  60. <table style="border: 0; width: 100%; font-size: 12px" border="0">
  61. <tr>
  62. <td style="vertical-align: top; width: 50%; text-align: left">
  63. Printed on: {{friendly_date_time(date('Y-m-d H:i:s'))}}
  64. <br>
  65. Note created using: Endochart
  66. </td>
  67. <td style="vertical-align: top; width: 50%; text-align: right">
  68. <div class="page-number"></div>
  69. </td>
  70. </tr>
  71. </table>
  72. </footer>-->
  73. <div style="margin: 0; padding: 1rem; font-family: serif" contenteditable="true">
  74. <!-- header/smg info -->
  75. <div style="text-align: right; margin-bottom: 1.5rem; font-family: sans-serif">
  76. <div style="margin-bottom: 3px; font-weight:bold; font-size: 14px">Scholar Medical Group</div>
  77. <div style="margin-bottom: 3px; font-size: 13px;">133 Rollins Ave, Suite 3</div>
  78. <div style="margin-bottom: 3px; font-size: 13px;">Rockville, MD 20852</div>
  79. <div style="margin-bottom: 3px; font-size: 13px;">Phone: 202-935-1033</div>
  80. <div style="margin-bottom: 3px; font-size: 13px;">NPI# 1639796428</div>
  81. </div>
  82. <!-- header grey bar -->
  83. <table style="background-color: #d9d9d9; border: 0; width: 100%; font-family: sans-serif" border="0">
  84. <tr>
  85. <td style="width: 50%; text-align: left; font-weight:bold; padding: 0.5rem 1rem;">Tele-Audio Visit</td>
  86. <td style="width: 50%; text-align: right; font-weight:bold; padding: 0.5rem 1rem;">
  87. @if($note->new_or_fu_or_na === "NEW")
  88. New
  89. @elseif($note->new_or_fu_or_na === "FU")
  90. Follow-up
  91. @else
  92. {{$note->new_or_fu_or_na}}
  93. @endif
  94. Televisit Note
  95. </td>
  96. </tr>
  97. </table>
  98. <!-- patient info -->
  99. <div style="padding: 1rem; border-bottom: 1px solid #ddd;">
  100. <div style="font-size: 18px; font-weight:bold; padding-bottom: 0.75rem; font-family: sans-serif">
  101. {{implode(', ', array_filter([$patient->name_last, $patient->name_first]))}}
  102. </div>
  103. <table style="border: 0; width: 100%; border: 0" border="0" cellspacing="0" cellpadding="0">
  104. <tr>
  105. <td style="width: 60%; text-align: left;">
  106. <table style="border: 0; width: 100%;" border="0" cellspacing="0" cellpadding="0">
  107. <tr>
  108. <td style="padding-bottom: 0.75rem; vertical-align: top" width="100px">Address:</td>
  109. <td style="padding-bottom: 0.75rem; vertical-align: top">{{@$patient->mailing_address_line1 ? $patient->mailing_address_line1 : ''}}</td>
  110. </tr>
  111. <tr>
  112. <td style="padding-bottom: 0.75rem; vertical-align: top" width="100px"></td>
  113. <td style="padding-bottom: 0.75rem; vertical-align: top">
  114. {{@$patient->mailing_address_city ? $patient->mailing_address_city : ''}}
  115. {{@$patient->mailing_address_state ? $patient->mailing_address_state : ''}}
  116. {{@$patient->mailing_address_zip ? $patient->mailing_address_zip : ''}}
  117. </td>
  118. </tr>
  119. <tr>
  120. <td style="padding-bottom: 0.75rem; vertical-align: top" width="100px">Gender:</td>
  121. <td style="padding-bottom: 0.75rem; vertical-align: top">{{$patient->sex}}</td>
  122. </tr>
  123. <tr>
  124. <td style="vertical-align: top" width="100px">Visited on:</td>
  125. <td style="vertical-align: top">{{friendly_date($note->effective_dateest)}}</td>
  126. </tr>
  127. </table>
  128. </td>
  129. <td style="width: 40%; text-align: left;">
  130. <table style="border: 0; width: 100%;" border="0" cellspacing="0" cellpadding="0">
  131. <tr>
  132. <td style="padding-bottom: 0.75rem; vertical-align: top" width="150px">Birth Date (Age):</td>
  133. <td style="padding-bottom: 0.75rem; vertical-align: top">{{friendly_date_time($patient->dob, false,null,true)}} ({{$patient->age_in_years}} Y)</td>
  134. </tr>
  135. <tr>
  136. <td style="padding-bottom: 0.75rem; vertical-align: top" width="150px">Home Phone:</td>
  137. <td style="padding-bottom: 0.75rem; vertical-align: top">{{$patient->phone_home}}</td>
  138. </tr>
  139. <tr>
  140. <td style="padding-bottom: 0.75rem; vertical-align: top" width="150px">Cell Phone:</td>
  141. <td style="padding-bottom: 0.75rem; vertical-align: top">{{$patient->cell_number}}</td>
  142. </tr>
  143. <tr>
  144. <td style="vertical-align: top" width="150px">Email:</td>
  145. <td style="vertical-align: top">{{$patient->email_address}}</td>
  146. </tr>
  147. </table>
  148. </td>
  149. </tr>
  150. </table>
  151. </div>
  152. <main role="main" class="stag-content px-0 mcp-theme-1 py-3">
  153. @yield('content')
  154. </main><!-- /.container -->
  155. <!-- signature -->
  156. <?php
  157. $bills = \App\Models\Bill::where('note_id', $note->id)
  158. ->where('bill_service_type', 'NOTE')
  159. ->where('code', 'Treatment Services')
  160. ->where('is_cancelled', false)
  161. ->where('hcp_pro_id', $note->hcpPro->id)
  162. ->get();
  163. $totalSeconds = 0;
  164. foreach ($bills as $bill) {
  165. $totalSeconds += $bill->number_of_units * 3600;
  166. }
  167. ?>
  168. <div style="padding: 1rem; padding-bottom: 0;">
  169. <p><b style="font-size: 18px">Signature</b></p>
  170. <table style="border: 0; width: 100%;" border="0" cellspacing="0" cellpadding="0">
  171. <tr style="background-color: #d9d9d9">
  172. <td style="font-weight:bold;border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="20%">Date of Service</td>
  173. <td style="font-weight:bold;border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="30%">Service</td>
  174. <td style="font-weight:bold;border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="50%">Place of Service</td>
  175. </tr>
  176. <tr>
  177. <td style="padding: 0.25rem 0.5rem; vertical-align: top" width="20%">{{friendly_date($note->effective_dateest)}}</td>
  178. <td style="padding: 0.25rem 0.5rem; vertical-align: top" width="30%">Treatment Services</td>
  179. <td style="padding: 0.25rem 0.5rem; vertical-align: top" width="50%">133 Rollins Ave, Suite 3, Rockville, MD 20852</td>
  180. </tr>
  181. <tr style="background-color: #d9d9d9">
  182. <td style="font-weight:bold;border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="20%">Total time spent</td>
  183. <td style="font-weight:bold;border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="30%">Provider (HCP)</td>
  184. <td style="font-weight:bold;border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="50%">Signature</td>
  185. </tr>
  186. <tr>
  187. <td style="border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="20%">{{round($totalSeconds/60)}} minutes</td>
  188. <td style="border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="30%">{{$note->hcpPro->displayName()}}</td>
  189. <td style="border-bottom: 1px solid #222; padding: 0.25rem 0.5rem; vertical-align: top" width="50%">
  190. @if($note->is_signed_by_hcp)
  191. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAIuHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjatZdrduM4DoX/cxWzBPEBglwOn+fMDmb584FSXEmqUp3qnoliS6ZpEsAFLi7d+s+/t/sXf6HU4JJoyTXni79UUw2Nh3Ldf/W8+yud9/MXnq/4/GHcvb4IDEXu8f6o7ZnfGJcfP3jbw/eP464834TyLOSvD1tH29me53sjGQ/3uE/PQnXdD7kWfW9qfxYaz8RjyvNKL7Pum312HwaUKE1hoxjCij5e573cFkR7+di41/NemOej8pxidNxi1GcxAvLBvbf7db0P0Icgvz25z9F/PX0KfmjPePwUy/zEiIdffuHl03h8bRPebxxfFoWPX/h8tZ/ceV57z7L3ur1rKRPR/GTUCbZ/W4aJnZDH87PMpbyEZz1X5SpsM4B8XuPqXMNXH0BlO5/89M1vv859+IGJKayg3EMYAGVjJWqoYUTDKdnld1DQm7GA5QjLgVmK4WWLP/vWs9/whZ2nZ2rwLOb5yZeX+92Xf3K5vYeFyF/lFSvsCpbXmGHI2TuzAMTvBzc5AX67Hvivd/lDqoKgnDAXHGxXv5fo4n/kVjw4R+YJ97uEvNP5LECI2FswxkcQuLKP4rO/NAT1njgWAGpYHmIKHQS8SJgYGSiQHJwGSoa9+Y36MzdIyMGG4SaAkJipp2L1BVgpCfmjqZBDTaIkEcmiUpxUaTnmlCXnrNlIrmnUpKJZVYtWbSWWVKTkoqWUWloNNcKBUnPVWmqtrQXX2KixVmN+Y6SHHnvq0nPXXnrtbZA+Iw0Zeegoo442w4wTmph56iyzzra8WzDFSktWXrrKqqttcm3HnbbsvHWXXXd7ofag+tP1B6j5B7VwkLJ5+kKNUaf6toQ3OhHDDMRC8iCuhgAJHQyzq/iUgiFnmF01UBQSMFIMGze9IQaEafkg27+w+4Hct3BzUr6FW/gr5JxB979AzgHdz7j9ArVpdDcOYncVWkyvSPXx/SrNhdKsqbV/ev9yobVyx9EdQ1tZRsU4JcO2kaeWKT3mTUS3BqyOe7v7iy3auuQmhG/lTFHuNbnWbHPpPvSxIcte656Z8M/Zpe2pMDjERzxd78iIsLsyr+zV/UoaJ6uJrFklrd716nA+EG+zwLZn7+ZLGKPPAsBM6W52y/8rDgJtfm0a5up/HiX3VxPYM9ROSnWC5msZQDn68VlXIxdy9tjb3ADrTsIIGDet3s+0k3hZmKxxtLyW53Oidi67xQwnT6k9WZr4tlO/pMTt8hxzbWkzr6JtVl2yt5RFNBjraukULzMv9FUT290f6Jcf7u7zwHfuO1lO5D7D6uT6wP/uqqZl8Da/roxIql1DrnMzOTWd3qRh0DGKHA+v2z+TZbkHSzQDSOLlFP8+uEdEzb01d+1zkS2TomKl8A7U9DM27u/XRp8aSDAvtrzlUepzrGvkFcGzH2jX1tXzLBTwPN6N1sFwkQj98bGkG0wTQIlYOFmxC0VPr9f37lzbEn5cahXxSx9zXOMPEvKb9+2EneCzBa3tw1iQkm4BqJmf9IlI4Rf0QBTMVgH8JmPrTNSWT07r2q0u7cdjyM6TiS/3v393v58gayixJIqn1Gbpliu9mRvReCKMDK/Equ6NWOalBw4IpK50vdIvgghqoTZRP0SAT1aaNhE0igwq9eqrq+uVPaAWr1NueCC0+QRx0QTK9+Ltvpt8pVnyKb61fuceDIevRNiaRXeQ29xtWuepngbTj9UBHtg+zbfsO6tBHUi7yWLgTJCqiPZd04B6q9vUVas0n0q3hYvhqr7lAX6WONf3WOEPaMSY3BqEbx2bPY2WNBp70Vx3vtyvcq4KtYCym4i8sgkInCrLN6iBZ6Jg+PkbuUFDMYzdi2P+4f1ZSNuS7NGCEWKlS4/E5guTOu2YqKEuLBf7qCcX97xqu2s3XPsaHzotOMTUlr0Er0O+a7xzPCDHilh1jd3z4NiDrzcXrg0XHrMcVtQ5/qS4KJtIaEofson/bLKWwV8op5PV1obZBZ2CoBnoG0FjIV4aZRYkUgKIywYPF7qw1kgSyeGBVfMVnYeetnWpaSTQl3TrgTLmIcq8DLG65o1RCrDGSVIFR7UzlP0+YJXDLL8CyU8NdtRXr5jCkeq0MCTZscQHpOZJj5bqW574LsUTejgW5WHH9UjwJrpMjE7NrpGlWnPZr+YCefuHsIJn6OfYuS+JqE0kTrM+S8MfmYBQTJrpvrSxlWi/QxExb4OOmWlzkCHvbzY6LV8/tHw7kPA8o28KiVHuEWLOPKB9mknoudxo+4T1Jacyx9dKrLy1f/67yqPTKpXfKR6KboLnGMjIBQkoOqu5u12zTQ4cR8nDaspkc9K9Y1LJ6fXDc9iBMmukda/iyxxDsU+t+sle1l6eo/h8srecbEa20NT2A1dviLffEIT7LDQyK3s9gmMbK8BPmwrbVl/bR0yPa3IIkEd6zExkabYOP+KYlrPzek+H3+mKJXc01eoUZHGonEJ/QVMCBWwMtnONpte2jcl/Mqs8/QVpntYXZej+sk6hZyH+WqwjL/SEZchF1gIXIaUyEOE5Ojpr9kgQowQlgytSrMoNz2fIvkrei0OJo4/asWbZcYkOs9o4kd/dF5rBta1orTO8HISzy9cM+T1K9Wt4OyIMmvisRi+cBawoccndPkVUUvSmhg4xrUNMcUa0/VOs6Iyav/Iuhu4oMtYfqDh+dhmrdgU+wnsAhK85un7Syy+1fO321vbc31DHv1LL28XJ2lAjeQsb2EW/9bFwiLoHmNDogYPmAKvQFs8pkoNtQRnf8UdXe/fytlLD0K/JF14RGT3GOh70eE1bOJ7Si2vFq5ZkYuLU5qNGVov9/3CCpF7WHXmeh9lUaZicFKaVaIocj9HI1jwT3GTNU6CbfE2PPPZoro2eVyMO8nrjNYdCIWuiEcwzmCEiEheXG/NLQnZu9iQ8SoJNF/bhdzsTXQm+eIBFO/wZfu5X+oXDeXX/BauewhmqOxqHAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9bpVVaHOwgxSFDdbIgKuKoVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEzc1J0UVK/F9SaBHjwXE/3t173L0D/M0qU82ecUDVLCOTSgq5/KoQfEUfQggjgpjETH1OFNPwHF/38PH1LsGzvM/9OSJKwWSATyCeZbphEW8QT29aOud94igrSwrxOfGYQRckfuS67PIb55LDfp4ZNbKZeeIosVDqYrmLWdlQiaeI44qqUb4/57LCeYuzWq2z9j35C8MFbWWZ6zSHkcIiliBCgIw6KqjCQoJWjRQTGdpPevhjjl8kl0yuChg5FlCDCsnxg//B727N4uSEmxROAr0vtv0xAgR3gVbDtr+Pbbt1AgSegSut4681gZlP0hsdLX4EDGwDF9cdTd4DLneAoSddMiRHCtD0F4vA+xl9Ux4YvAX619ze2vs4fQCy1FX6Bjg4BEZLlL3u8e5Qd2//nmn39wMWnHKCDE8toAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+UJCAwNJbVJOWEAAAKvSURBVFjDvddLaJRXGAbgZ5KIGpMUo6gg2JRaVFQUsSJU0SIiXbSLgKQLL/FGFLNRK5iKK6uL0prxUsR7ammri0aIFDdKvCGK7hS8K9qikcao8RJHHOxCjKlzxiQz//Qsv/f/zvue93znnO+P+f9GD5uM12a0mKSERmvciOWcdp5i032nxHw9FbXHk/jHNwU5Jf/FR4o0KvJhCpaPF2K5c6DOKAMdVaBfCpZEk+Uq1eblhHyZIQb4My35NVUq1UL0WzBWoSkO62FICvYS11Wptv1NKHoHauzTxydBrNmKjuTRC9ilRqkv05DvMtuGd8PRFeFGEwxzSr78FOyx08pNw7N3oagcKFRmf5A84YHjKkLk0QnYL65QWbDi/1Yp7na61OwFxH3hA4uC2CPbLNbwvvRY1tYfdFGvwJFrc9NXRqWzPhoHfvd9kDyJmxZ2Rp6dAz8Z72NnA2VHi+0qVHVlmswdGGRnkDyhWYOVXZ0mL8MLp1qJMUHsLyv8qrWrU6Xbgj54GkSW6m+GK3rrm4I9dMpMn3VnLakObDbBAedsNSeYMcmaIHkSl1V318zYf1b9m9VK1chHQqsjRqvtcImsM8I4FxQEhN+319fmdldAQfuqB/tZseHtSE8lpjqiyBRr3QEjfRskT3rqvFWZlFNM3GzD7Q1WNDx32z2rXdXsc4eC390TN8uyzARQqMFRvX2a0Ylo80SdMvXuZ5Keh2cazfTcrYwEtIhnSv72FNS65ZoKLzq/OlNWv8WP2dzmeR0ayTOaLJDsRnarHc55GI0AWGCfZj90KfOlNnetz/Y1jwVj9Y4pNrmTva9TYV62AkJvwSsnzJLwIG3WK1x63dfnwoHXY6tyQ/0RxB47o9zEKASkfw2XqNfiUJpWa09UzfT7/4xOWmqw6Snx3Q5EJeBfxAKp1UNODm8AAAAASUVORK5CYII="
  192. style="height: 10px">
  193. Signed
  194. @else
  195. <span style="color: red; font-weight:bold;">No</span>
  196. @endif
  197. </td>
  198. </tr>
  199. </table>
  200. @if($note->is_signed_by_hcp)
  201. <table style="border: 0; width: 100%; font-size: 12px" border="0">
  202. <tr>
  203. <td style="vertical-align: top; width: 50%; text-align: left">
  204. Printed on: {{friendly_date_time(date('Y-m-d H:i:s'))}}
  205. <br>
  206. Note created using: Endochart
  207. </td>
  208. <td style="vertical-align: top; width: 50%; text-align: right">
  209. <div style="text-align: right; font-size: 13px; padding-top: 2px">Signed electronically on {{friendlier_date_time($note->signed_by_hcp_at)}}</div>
  210. </td>
  211. </tr>
  212. </table>
  213. @endif
  214. </div>
  215. <div class="no00-print" style="padding-top: 1rem; text-align: center"><a id="save_btn" href="#">Save</a></div>
  216. <div style="padding-top: 2rem; text-align: center">********</div>
  217. </div>
  218. <script>
  219. $(document).ready(function(){
  220. let saveBtn = document.querySelector('#save_btn');
  221. let content = document.querySelector('html');
  222. let contentHTML = content.outerHTML;
  223. let noteUid = content.getAttribute('note-uid');
  224. setInterval(function(){
  225. try {
  226. submitToBackend(noteUid, contentHTML);
  227. }catch(e){
  228. console.log(e)
  229. }
  230. }, 10000);
  231. saveBtn.addEventListener('click', () => {
  232. submitToBackend(noteUid, contentHTML)
  233. //send this to java
  234. //create note_print record with versioned history
  235. //on note show a list of note prints to admins
  236. //allow opening a note print on its own tab with note print id means update existing
  237. //auto save as you edit to local storage. flush local storage when you hit save
  238. });
  239. })
  240. function submitToBackend(noteUid, content){
  241. console.log("saving...")
  242. console.log(noteUid);
  243. console.log(content);
  244. }
  245. </script>
  246. </body>
  247. </html>