# Conflicts:
#	fonts/DoctorApp.ttf
#	lib/presentation/doctor_app_icons.dart
merge-requests/125/head
Sultan Khan 6 years ago
commit 79c2de3f96

@ -1,7 +1,7 @@
{ {
"commentBox.styles": { "commentBox.styles": {
"defaultStyle": { "defaultStyle": {
"commentStartToken": "/* \n *@author: Amjad Amireh \n *@Date:27/4/2020 \n *@param: \n *@return:\n *@desc: ", "commentStartToken": "/* \n *@author: Ibrahim Albitar \n *@Date:03/06/2020 \n *@param: \n *@return:\n *@desc: ",
"commentEndToken": "\n */", "commentEndToken": "\n */",
"leftEdgeToken": " * ", "leftEdgeToken": " * ",
"rightEdgeToken": "", "rightEdgeToken": "",

@ -1,37 +0,0 @@
<svg id="discharge_patient" xmlns="http://www.w3.org/2000/svg" width="39.515" height="36.042" viewBox="0 0 39.515 36.042">
<g id="Group_339" data-name="Group 339" transform="translate(0 3.859)">
<g id="Group_338" data-name="Group 338">
<path id="Path_150" data-name="Path 150" d="M38.936,101.209H38.2V93.684a2.9,2.9,0,0,0-2.894-2.894H33.514a2.9,2.9,0,0,0-1.1-1.735V82.494a2.125,2.125,0,0,0-2.122-2.122H26.433a2.125,2.125,0,0,0-2.122,2.122v4.245a.579.579,0,1,0,1.158,0V82.494a.966.966,0,0,1,.965-.965h3.859a.966.966,0,0,1,.965.965v6.04a2.9,2.9,0,0,0-.579-.058H23.153V85.349a2.9,2.9,0,0,0-2.894-2.894H15.05V80.024A2.125,2.125,0,0,0,12.927,77.9H9.068a2.126,2.126,0,0,0-2.036,1.523,6.374,6.374,0,0,1-5.875-6.346.579.579,0,0,0-1.158,0,7.535,7.535,0,0,0,6.946,7.5v7.161A4.038,4.038,0,0,0,8.1,90.573v5.867l-3.375,5.025a.579.579,0,0,0-.1.323V104.1a.579.579,0,0,0,1.158,0v-2.139L9.163,96.94a.578.578,0,0,0,.1-.323V91.4a4.045,4.045,0,0,0,3.473,0v11.93a.579.579,0,0,0,.4.549l2.315.772a.579.579,0,1,0,.366-1.1l-1.919-.64V90.573a4.038,4.038,0,0,0,1.158-2.832V83.613h5.21A1.738,1.738,0,0,1,22,85.349V91.2a6.749,6.749,0,1,0,7.2,5.377h3.223v2.374a2.894,2.894,0,1,0,3.415,3.415h3.107a.579.579,0,0,0,0-1.158ZM11,90.636A2.9,2.9,0,0,1,8.162,88.32h5.672A2.9,2.9,0,0,1,11,90.636Zm2.894-3.473H8.1V80.024a.966.966,0,0,1,.965-.965h1.351V80.8a.579.579,0,0,0,1.158,0V79.059h1.351a.966.966,0,0,1,.965.965Zm11.577,2.47h5.21a1.738,1.738,0,0,1,1.737,1.737v1.737H28.363a2.9,2.9,0,0,1-2.894-2.894Zm-2.315,0h1.158v.579a4.035,4.035,0,0,0,.2,1.247,6.705,6.705,0,0,0-1.355-.258Zm-.579,13.892a5.6,5.6,0,1,1,5.6-5.6A5.6,5.6,0,0,1,22.575,103.525Zm6.27-8.1a6.741,6.741,0,0,0-.6-1.158h4.171v1.158Zm4.149,8.1a1.737,1.737,0,1,1,1.737-1.737A1.738,1.738,0,0,1,32.994,103.525Zm4.052-2.315H35.83a2.9,2.9,0,0,0-2.257-2.257v-7h1.737a1.738,1.738,0,0,1,1.737,1.736Z" transform="translate(0 -72.499)"/>
</g>
</g>
<g id="Group_341" data-name="Group 341" transform="translate(21.996 2.47)">
<g id="Group_340" data-name="Group 340">
<path id="Path_151" data-name="Path 151" d="M291.367,54.5a4.058,4.058,0,0,0-3.935,3.089,2.508,2.508,0,1,0,1.751,4.373,4.051,4.051,0,1,0,2.184-7.462Zm0,1.158A2.9,2.9,0,0,1,294.2,57.94a6.3,6.3,0,0,1-4.036-2.018A2.875,2.875,0,0,1,291.367,55.657Zm-3.859,5.788a1.35,1.35,0,0,1-.188-2.687,4.033,4.033,0,0,0,.976,2.432A1.349,1.349,0,0,1,287.508,61.445Zm3.859,0a2.893,2.893,0,0,1-2.146-4.834,7.445,7.445,0,0,0,4.986,2.493A2.9,2.9,0,0,1,291.367,61.445Z" transform="translate(-285 -54.499)"/>
</g>
</g>
<g id="Group_343" data-name="Group 343" transform="translate(22.162 29.069)">
<g id="Group_342" data-name="Group 342" transform="translate(0 0)">
<ellipse id="Ellipse_143" data-name="Ellipse 143" cx="0.869" rx="0.869"/>
</g>
</g>
<g id="Group_345" data-name="Group 345" transform="translate(18.137 24.851)">
<g id="Group_344" data-name="Group 344">
<path id="Path_152" data-name="Path 152" d="M239.438,344.5a4.438,4.438,0,1,0,4.438,4.438A4.443,4.443,0,0,0,239.438,344.5Zm0,7.718a3.28,3.28,0,1,1,3.28-3.28A3.284,3.284,0,0,1,239.438,352.217Z" transform="translate(-235 -344.499)"/>
</g>
</g>
<g id="Group_347" data-name="Group 347" transform="translate(32.589 32.545)">
<g id="Group_346" data-name="Group 346" transform="translate(0 0)">
<circle id="Ellipse_144" data-name="Ellipse 144" cx="0.869" cy="0.869" r="0.869"/>
</g>
</g>
<g id="Group_349" data-name="Group 349" transform="translate(9.261 3.473)">
<g id="Group_348" data-name="Group 348">
<path id="Path_153" data-name="Path 153" d="M122.894,68.1a.838.838,0,0,1-.684-.356.579.579,0,0,0-.947,0,.838.838,0,0,1-.684.356.579.579,0,1,0,0,1.158,2,2,0,0,0,1.158-.371,2,2,0,0,0,1.158.371.579.579,0,1,0,0-1.158Z" transform="translate(-120 -67.499)"/>
</g>
</g>
<g id="Group_351" data-name="Group 351" transform="translate(6.946)">
<g id="Group_350" data-name="Group 350">
<path id="Path_154" data-name="Path 154" d="M94.052,22.5A4.052,4.052,0,1,0,98.1,26.551,4.056,4.056,0,0,0,94.052,22.5Zm0,6.946a2.894,2.894,0,1,1,2.894-2.894A2.9,2.9,0,0,1,94.052,29.445Z" transform="translate(-90 -22.499)"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="29.959" height="29.962" viewBox="0 0 29.959 29.962">
<path id="home_icon" d="M29.654,13.032l0,0L17.429.808a2.758,2.758,0,0,0-3.9,0L1.313,13.023l-.012.013a2.757,2.757,0,0,0,1.835,4.7c.028,0,.057,0,.085,0h.487v8.994a3.232,3.232,0,0,0,3.228,3.228h4.782a.878.878,0,0,0,.878-.878V22.032a1.475,1.475,0,0,1,1.473-1.473h2.82a1.474,1.474,0,0,1,1.473,1.473v7.052a.878.878,0,0,0,.878.878h4.782a3.232,3.232,0,0,0,3.228-3.228V17.739H27.7a2.759,2.759,0,0,0,1.952-4.708ZM28.411,15.69a1,1,0,0,1-.709.294H26.372a.878.878,0,0,0-.878.878v9.872a1.474,1.474,0,0,1-1.473,1.473h-3.9V22.032A3.232,3.232,0,0,0,16.889,18.8h-2.82a3.232,3.232,0,0,0-3.229,3.228v6.174h-3.9a1.474,1.474,0,0,1-1.473-1.473V16.862a.878.878,0,0,0-.878-.878H3.279l-.041,0a1,1,0,0,1-.691-1.711h0L14.77,2.049a1,1,0,0,1,1.418,0L28.407,14.268l.006.005A1,1,0,0,1,28.411,15.69Zm0,0" transform="translate(-0.499)"/>
</svg>

Before

Width:  |  Height:  |  Size: 913 B

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="29.959" height="29.961" viewBox="0 0 29.959 29.961">
<path id="home_icon_active" d="M29.654,13.032l0,0L17.429.808a2.758,2.758,0,0,0-3.9,0L1.313,13.023l-.012.013a2.757,2.757,0,0,0,1.835,4.7c.028,0,.057,0,.085,0h.487v8.994a3.232,3.232,0,0,0,3.228,3.228h4.782a.878.878,0,0,0,.878-.878V22.032a1.475,1.475,0,0,1,1.473-1.473h2.82a1.474,1.474,0,0,1,1.473,1.473v7.052a.878.878,0,0,0,.878.878h4.782a3.232,3.232,0,0,0,3.228-3.228V17.739H27.7a2.759,2.759,0,0,0,1.952-4.708ZM28.411,15.69a1,1,0,0,1-.709.294H26.372a.878.878,0,0,0-.878.878v9.872a1.474,1.474,0,0,1-1.473,1.473h-3.9V22.032A3.232,3.232,0,0,0,16.889,18.8h-2.82a3.232,3.232,0,0,0-3.229,3.228v6.174h-3.9a1.474,1.474,0,0,1-1.473-1.473V16.862a.878.878,0,0,0-.878-.878H3.279l-.041,0a1,1,0,0,1-.691-1.711h0L14.77,2.049a1,1,0,0,1,1.418,0L28.407,14.268l.006.005A1,1,0,0,1,28.411,15.69Zm0,0" transform="translate(-0.5)" fill="#fff"/>
</svg>

Before

Width:  |  Height:  |  Size: 930 B

@ -1,6 +0,0 @@
<svg id="in_patient_white" xmlns="http://www.w3.org/2000/svg" width="37.21" height="30.421" viewBox="0 0 37.21 30.421">
<circle id="Ellipse_138" data-name="Ellipse 138" cx="0.659" cy="0.659" r="0.659" transform="translate(12.182 9.632) rotate(-5.682)"/>
<circle id="Ellipse_139" data-name="Ellipse 139" cx="0.659" cy="0.659" r="0.659" transform="translate(16.665 9.63) rotate(-5.682)"/>
<path id="Path_67" data-name="Path 67" d="M188.5,219.565H186.52a.55.55,0,1,0,0,1.1H188.5a.55.55,0,0,0,0-1.1Z" transform="translate(-172.455 -207.002)"/>
<path id="Path_68" data-name="Path 68" d="M36.175,49.19h-1.66V47.8h2.145a.55.55,0,0,0,0-1.1H8.408a.55.55,0,0,0,0,1.1H33.415V49.19h-1.66a1.035,1.035,0,0,0-1.034,1.034v4.783a3.246,3.246,0,0,0,1.69,2.847l-.359.577a2.948,2.948,0,0,0-.13,2.864l1.493,2.97a1.842,1.842,0,0,1-.38,2.155L30.3,68.891v-10.6a1.537,1.537,0,0,0-1.535-1.535H27.178a5.358,5.358,0,0,0-.184-.794,1.373,1.373,0,0,1-.032-.7l.405-1.88a1.072,1.072,0,0,0-1.274-1.273c-.57.075-1.964.569-2.545.356a5.392,5.392,0,0,0-.664-.174.55.55,0,0,0-.21,1.079,4.277,4.277,0,0,1,.527.138,2.465,2.465,0,0,0,1.3.069l1.786-.385-.4,1.838c-.206.788.27,1.637.254,2.548v5.685a4.283,4.283,0,0,1-.2,1.3,2.453,2.453,0,0,0-.091.408A6.988,6.988,0,0,0,21.2,63.208H18.846v-.54a5.31,5.31,0,0,0,1.526-2.8,3.008,3.008,0,0,0,1.719-1.849A2.109,2.109,0,0,0,20.9,55.3h0a1.337,1.337,0,0,0-.428-.067V52.613a2.9,2.9,0,0,0-2.895-2.895H12.7a2.9,2.9,0,0,0-2.864,2.476H8.425c-.777-.079-1.563.392-2.412.311l-1.828-.394a1.072,1.072,0,0,0-1.273,1.274l.405,1.88a1.372,1.372,0,0,1-.032.7,5.355,5.355,0,0,0-.184.794H1.707V48.989A1.186,1.186,0,0,1,2.891,47.8H5.88a.55.55,0,0,0,0-1.1H2.891A2.286,2.286,0,0,0,.607,48.989v8.084A1.532,1.532,0,0,0,0,58.293L.014,76.165a.962.962,0,0,0,.961.961H29.332a.962.962,0,0,0,.961-.961l.008-5.791,3.474-3.143.007-.007A2.947,2.947,0,0,0,34.4,63.77L32.9,60.8a1.842,1.842,0,0,1,.081-1.789l.5-.8a3.255,3.255,0,0,0,.484.036h0a3.245,3.245,0,0,0,2.774-1.563,3.4,3.4,0,0,0,.47-1.681V50.224A1.035,1.035,0,0,0,36.175,49.19Zm-6.972,9.1V69.886l-.6.544q-.188-.17-.382-.331A6.973,6.973,0,0,0,27.151,66.5a3.551,3.551,0,0,1-.162-1.609,5.379,5.379,0,0,0,.252-1.63V57.857h1.526a.436.436,0,0,1,.436.436Zm-16.67,5.192a5.328,5.328,0,0,0,5.213,0v1a.452.452,0,0,1-.451.451H12.984a.452.452,0,0,1-.451-.451Zm8.028-7.142a1.02,1.02,0,0,1,.485,1.334c-.187.575-.774,1.159-1.185,1.18a.55.55,0,0,0-.518.484,4.233,4.233,0,0,1-8.406,0,.55.55,0,0,0-.518-.484c-.411-.021-1-.605-1.185-1.18a1.02,1.02,0,0,1,.485-1.334.2.2,0,0,1,.058-.013c.036,0,.068.026.132.116a.549.549,0,0,0,.615.2c.284-.081.436-.481.382-.863a2.114,2.114,0,0,1,2.112-2.112h4.245a2.114,2.114,0,0,1,2.112,2.112c-.012.293-.034.683.382.863a.549.549,0,0,0,.615-.2c.095-.133.119-.125.19-.1Zm-9.656-3.731a1.8,1.8,0,0,1,1.8-1.8h4.878a1.8,1.8,0,0,1,1.8,1.8v.759a3.2,3.2,0,0,0-2.112-.795H13.017a3.2,3.2,0,0,0-2.112.795Zm-5.123.967a2.469,2.469,0,0,0,1.3-.069,4.271,4.271,0,0,1,1.348-.217H9.806v1.938a1.33,1.33,0,0,0-.428.067,2.109,2.109,0,0,0-1.19,2.719,3.006,3.006,0,0,0,1.719,1.849,5.31,5.31,0,0,0,1.526,2.8v.54H9.075a6.988,6.988,0,0,0-4.646,1.763,2.458,2.458,0,0,0-.091-.408,4.283,4.283,0,0,1-.2-1.3V57.58c-.047-.786.458-1.643.254-2.548L4,53.195ZM1.1,58.293a.436.436,0,0,1,.436-.436h1.5v5.409A5.379,5.379,0,0,0,3.29,64.9,3.7,3.7,0,0,1,3.128,66.5a6.973,6.973,0,0,0-1.069,3.6q-.329.274-.641.572a4.505,4.505,0,0,0-.319.339V58.293ZM29.194,76.027H1.113V73.968a3.477,3.477,0,0,1,1.065-2.5,10.937,10.937,0,0,1,5.46-2.843.55.55,0,1,0-.212-1.079,12,12,0,0,0-4.185,1.69,5.927,5.927,0,0,1,5.834-4.931h2.359v.176a1.552,1.552,0,0,0,1.55,1.55H17.3a1.552,1.552,0,0,0,1.55-1.55v-.176H21.2a5.927,5.927,0,0,1,5.833,4.924,12.017,12.017,0,0,0-6.524-1.911H10.1a.55.55,0,1,0,0,1.1H20.513a10.918,10.918,0,0,1,6.807,2.363l.016.012q.414.329.8.7a3.482,3.482,0,0,1,1.059,2.493v2.037ZM36.11,50.289v1.516H31.82V50.289Zm-.169,5.551a2.237,2.237,0,0,1-1.976,1.311,2.147,2.147,0,0,1-2.145-2.145V52.9h4.29v2.1A2.138,2.138,0,0,1,35.941,55.841Z" transform="translate(0 -46.705)"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

@ -1,20 +0,0 @@
<svg id="lab_results" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
<path id="Path_132" data-name="Path 132" d="M112.9,288H112a1.357,1.357,0,0,0,1.355,1.355v-.9A.452.452,0,0,1,112.9,288Zm0,0" transform="translate(-105.677 -271.742)" fill="#fff"/>
<path id="Path_133" data-name="Path 133" d="M208,376h.9v.9H208Zm0,0" transform="translate(-196.258 -354.774)" fill="#fff"/>
<path id="Path_134" data-name="Path 134" d="M144,408h.9v.9H144Zm0,0" transform="translate(-135.871 -384.968)" fill="#fff"/>
<path id="Path_135" data-name="Path 135" d="M88,448h.9v.9H88Zm0,0" transform="translate(-83.032 -422.71)" fill="#fff"/>
<path id="Path_136" data-name="Path 136" d="M200,440h.9v.9H200Zm0,0" transform="translate(-188.71 -415.161)" fill="#fff"/>
<path id="Path_137" data-name="Path 137" d="M120,360h.9v.9H120Zm0,0" transform="translate(-113.226 -339.677)" fill="#fff"/>
<path id="Path_138" data-name="Path 138" d="M8.129,0V6.323H3.613a.9.9,0,0,0-.9.9v.9a.9.9,0,0,0,.9.9v3.2a2.285,2.285,0,0,1-.1.676L.141,23.859A3.2,3.2,0,0,0,3.2,28H28V0ZM3.613,7.226h8.129v.9H3.613Zm8.129,1.806a.9.9,0,0,0,.9-.9v-.9a.9.9,0,0,0-.9-.9h-.9V2.71h7.226V9.935H11.742ZM4.375,13.173a3.2,3.2,0,0,0,.141-.941v-3.2h6.323v3.2a3.2,3.2,0,0,0,.141.941l1.227,3.988h-1.5a3.157,3.157,0,0,0,.133-.9v-.153a3.163,3.163,0,0,0-.451-1.627L7.677,9.961,4.967,14.479a3.161,3.161,0,0,0-.451,1.626v.153a3.142,3.142,0,0,0,.133.9h-1.5Zm3.3,5.343a2.261,2.261,0,0,1-2.258-2.258v-.153a2.257,2.257,0,0,1,.322-1.162l1.936-3.228,1.936,3.227a2.26,2.26,0,0,1,.322,1.162v.153A2.261,2.261,0,0,1,7.677,18.516ZM3.2,27.1a2.275,2.275,0,0,1-2.255-2.71H4.065v-.9H1.2l.278-.9H5.419v-.9H1.758l.278-.9H4.065v-.9H2.314l.556-1.806H5.087a3.154,3.154,0,0,0,5.181,0h2.217l1.865,6.06A2.3,2.3,0,0,1,12.155,27.1Zm23.9,0H14.378a3.192,3.192,0,0,0,.836-3.238L11.844,12.908a2.285,2.285,0,0,1-.1-.676V10.839h7.226V1.806H9.935V6.323h-.9V.9H27.1Zm0,0" fill="#fff"/>
<path id="Path_139" data-name="Path 139" d="M292.968,288a4.968,4.968,0,1,0,4.968,4.968A4.974,4.974,0,0,0,292.968,288Zm0,9.032a4.065,4.065,0,1,1,4.064-4.064A4.069,4.069,0,0,1,292.968,297.032Zm0,0" transform="translate(-271.742 -271.742)" fill="#fff"/>
<path id="Path_140" data-name="Path 140" d="M332.065,328h-2.71v1.355H328v2.71h1.355v1.355h2.71v-1.355h1.355v-2.71h-1.355Zm.452,2.258v.9h-1.355v1.355h-.9v-1.355H328.9v-.9h1.355V328.9h.9v1.355Zm0,0" transform="translate(-309.484 -309.484)" fill="#fff"/>
<path id="Path_141" data-name="Path 141" d="M352,40h.9v.9H352Zm0,0" transform="translate(-332.129 -37.742)" fill="#fff"/>
<path id="Path_142" data-name="Path 142" d="M384,40h4.516v.9H384Zm0,0" transform="translate(-362.323 -37.742)" fill="#fff"/>
<path id="Path_143" data-name="Path 143" d="M352,104h.9v.9H352Zm0,0" transform="translate(-332.129 -98.129)" fill="#fff"/>
<path id="Path_144" data-name="Path 144" d="M384,104h4.516v.9H384Zm0,0" transform="translate(-362.323 -98.129)" fill="#fff"/>
<path id="Path_145" data-name="Path 145" d="M352,72h6.323v.9H352Zm0,0" transform="translate(-332.129 -67.935)" fill="#fff"/>
<path id="Path_146" data-name="Path 146" d="M352,136h6.323v.9H352Zm0,0" transform="translate(-332.129 -128.323)" fill="#fff"/>
<path id="Path_147" data-name="Path 147" d="M352,168h6.323v.9H352Zm0,0" transform="translate(-332.129 -158.516)" fill="#fff"/>
<path id="Path_148" data-name="Path 148" d="M240,224h12.645v.9H240Zm0,0" transform="translate(-226.452 -211.355)" fill="#fff"/>
<path id="Path_149" data-name="Path 149" d="M240,256h12.645v.9H240Zm0,0" transform="translate(-226.452 -241.548)" fill="#fff"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

@ -1,22 +0,0 @@
<svg id="menu_icon" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
<g id="Group_375" data-name="Group 375">
<g id="Group_374" data-name="Group 374">
<path id="Path_181" data-name="Path 181" d="M11.387,0H2.329A2.332,2.332,0,0,0,0,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,11.387,0Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186V2.329A1.187,1.187,0,0,1,2.329,1.143h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,12.574Z"/>
</g>
</g>
<g id="Group_377" data-name="Group 377" transform="translate(14.283)">
<g id="Group_376" data-name="Group 376">
<path id="Path_182" data-name="Path 182" d="M120.614,0h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,120.614,0ZM121.8,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186V2.329a1.187,1.187,0,0,1,1.186-1.186h9.058A1.187,1.187,0,0,1,121.8,2.329Z" transform="translate(-109.227)"/>
</g>
</g>
<g id="Group_379" data-name="Group 379" transform="translate(0 14.283)">
<g id="Group_378" data-name="Group 378">
<path id="Path_183" data-name="Path 183" d="M11.387,109.227H2.329A2.332,2.332,0,0,0,0,111.556v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,11.387,109.227Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,121.8Z" transform="translate(0 -109.227)"/>
</g>
</g>
<g id="Group_381" data-name="Group 381" transform="translate(14.283 14.283)">
<g id="Group_380" data-name="Group 380">
<path id="Path_184" data-name="Path 184" d="M120.614,109.227h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,120.614,109.227Zm1.186,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186Z" transform="translate(-109.227 -109.227)"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,22 +0,0 @@
<svg id="menu_icon_active" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
<g id="Group_375" data-name="Group 375">
<g id="Group_374" data-name="Group 374">
<path id="Path_181" data-name="Path 181" d="M11.387,0H2.329A2.332,2.332,0,0,0,0,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,11.387,0Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186V2.329A1.187,1.187,0,0,1,2.329,1.143h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,12.574Z" fill="#fff"/>
</g>
</g>
<g id="Group_377" data-name="Group 377" transform="translate(14.283)">
<g id="Group_376" data-name="Group 376">
<path id="Path_182" data-name="Path 182" d="M120.614,0h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,120.614,0ZM121.8,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186V2.329a1.187,1.187,0,0,1,1.186-1.186h9.058A1.187,1.187,0,0,1,121.8,2.329Z" transform="translate(-109.227)" fill="#fff"/>
</g>
</g>
<g id="Group_379" data-name="Group 379" transform="translate(0 14.283)">
<g id="Group_378" data-name="Group 378">
<path id="Path_183" data-name="Path 183" d="M11.387,109.227H2.329A2.332,2.332,0,0,0,0,111.556v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,11.387,109.227Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,121.8Z" transform="translate(0 -109.227)" fill="#fff"/>
</g>
</g>
<g id="Group_381" data-name="Group 381" transform="translate(14.283 14.283)">
<g id="Group_380" data-name="Group 380">
<path id="Path_184" data-name="Path 184" d="M120.614,109.227h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,120.614,109.227Zm1.186,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186Z" transform="translate(-109.227 -109.227)" fill="#fff"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="23.333" viewBox="0 0 28 23.333">
<g id="message_icon" transform="translate(0 -42.667)">
<g id="Group_368" data-name="Group 368" transform="translate(0 42.667)">
<path id="Path_161" data-name="Path 161" d="M27.6,43.7a2.333,2.333,0,0,0-1.937-1.031H2.333A2.333,2.333,0,0,0,0,45V63.667A2.333,2.333,0,0,0,2.333,66H25.909A2.333,2.333,0,0,0,28,63.667V45A2.333,2.333,0,0,0,27.6,43.7Zm-25.27-.1H25.667a1.4,1.4,0,0,1,.905.331l-1.811,1.727-7.635,7.275-2.828,2.7a.467.467,0,0,1-.555,0l-2.87-2.7-9.473-9A1.4,1.4,0,0,1,2.333,43.6Zm-1.4,1.176L9.875,53.26.933,61.8V45A1.393,1.393,0,0,1,.933,44.776ZM27.067,63.667a1.4,1.4,0,0,1-1.223,1.4H2.333a1.4,1.4,0,0,1-1.4-1.4v-.593l9.618-9.17,2.571,2.445a1.4,1.4,0,0,0,.2.135,1.363,1.363,0,0,0,.677.182,1.47,1.47,0,0,0,.933-.327l2.539-2.417,9.595,9.142Zm0-18.667V61.777l-8.941-8.5,8.941-8.507A1.433,1.433,0,0,1,27.067,45Z" transform="translate(0 -42.667)"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 975 B

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="23.333" viewBox="0 0 28 23.333">
<g id="message_icon_active" transform="translate(0 -42.667)">
<g id="Group_368" data-name="Group 368" transform="translate(0 42.667)">
<path id="Path_161" data-name="Path 161" d="M27.6,43.7a2.333,2.333,0,0,0-1.937-1.031H2.333A2.333,2.333,0,0,0,0,45V63.667A2.333,2.333,0,0,0,2.333,66H25.909A2.333,2.333,0,0,0,28,63.667V45A2.333,2.333,0,0,0,27.6,43.7Zm-25.27-.1H25.667a1.4,1.4,0,0,1,.905.331l-1.811,1.727-7.635,7.275-2.828,2.7a.467.467,0,0,1-.555,0l-2.87-2.7-9.473-9A1.4,1.4,0,0,1,2.333,43.6Zm-1.4,1.176L9.875,53.26.933,61.8V45A1.393,1.393,0,0,1,.933,44.776ZM27.067,63.667a1.4,1.4,0,0,1-1.223,1.4H2.333a1.4,1.4,0,0,1-1.4-1.4v-.593l9.618-9.17,2.571,2.445a1.4,1.4,0,0,0,.2.135,1.363,1.363,0,0,0,.677.182,1.47,1.47,0,0,0,.933-.327l2.539-2.417,9.595,9.142Zm0-18.667V61.777l-8.941-8.5,8.941-8.507A1.433,1.433,0,0,1,27.067,45Z" transform="translate(0 -42.667)" fill="#fff"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 994 B

@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="38.934" height="37.964" viewBox="0 0 38.934 37.964">
<g id="operations" transform="translate(0 -6.332)">
<g id="Group_385" data-name="Group 385" transform="translate(2.911 24.24)">
<path id="Path_185" data-name="Path 185" d="M82.448,419.768h26.3a17.161,17.161,0,0,0-26.3,0Z" transform="translate(-79.04 -400.326)" fill="#b8382c"/>
<path id="Path_186" data-name="Path 186" d="M45.522,239.98l-1.66,1.66h-.031a5.847,5.847,0,0,0-5.847,5.847V251.7l9.631-9.631Z" transform="translate(-37.984 -239.98)" fill="#b8382c"/>
</g>
<path id="Path_187" data-name="Path 187" d="M125.992,27.381l.7-.7a1.9,1.9,0,0,0,1.213.447,1.927,1.927,0,0,0,1.353-.56l.579-.579a1.911,1.911,0,0,0,3.1.579l2.193-2.193,6.058,2.753h5.652v1.84h4.905V17.929H146.84v1.84h-.972l-5.339-5.339-1-.588,3.5-3.5a2.347,2.347,0,0,0-3.32-3.32L134.936,11.8h-2.093a2.448,2.448,0,0,0-1.664.651l-7.031,6.49a1.891,1.891,0,0,0,.525,3.122l-2,2Zm-1.586-3.32,1.649-1.649A2.145,2.145,0,0,0,127.641,24l-1.649,1.649Zm3.986,1.638a.708.708,0,0,1-.818.1l1.738-1.738h.719Zm3.679,0a.688.688,0,0,1-1.174-.486.682.682,0,0,1,.2-.486l.666-.666h1.945Zm16-6.544h2.453V27.74h-2.453V19.155Zm-8.347-3.8,5.64,5.64h1.48V25.9h-5.386l-6.745-3.066h-6.571a.92.92,0,1,1,0-1.84h4.6l1.561-.3a2.619,2.619,0,0,0,1.928-3.549l2.41-2.41Zm-4.537,2.835a1.409,1.409,0,0,1-1.125,1.3l-.221.044Zm5.4-10.3a1.121,1.121,0,0,1,1.914.793,1.114,1.114,0,0,1-.328.793l-10.3,10.3H128.7ZM125.5,20.995h-.069a.666.666,0,0,1-.452-1.155l7.031-6.49a1.22,1.22,0,0,1,.832-.326h.866l-7.86,7.86A.657.657,0,0,1,125.5,20.995Z" transform="translate(-113.27 0)" fill="#fff"/>
<path id="Path_188" data-name="Path 188" d="M38.391,360.362c-.063-.107-6.454-10.726-18.924-10.726S.606,360.255.543,360.362L0,361.286H38.934Zm-36.162-.3c1.828-2.5,7.627-9.2,17.238-9.2s15.409,6.7,17.238,9.2Z" transform="translate(0 -316.991)" fill="#fff"/>
<rect id="Rectangle_177" data-name="Rectangle 177" width="2.453" height="1.226" transform="translate(18.241 35.098)" fill="#fff"/>
<rect id="Rectangle_178" data-name="Rectangle 178" width="2.453" height="1.226" transform="translate(14.33 37.014) rotate(160.007)" fill="#fff"/>
<rect id="Rectangle_179" data-name="Rectangle 179" width="2.453" height="1.226" transform="matrix(-0.766, 0.643, -0.643, -0.766, 8.578, 39.839)" fill="#fff"/>
<rect id="Rectangle_180" data-name="Rectangle 180" width="1.226" height="2.453" transform="matrix(-0.643, 0.766, -0.766, -0.643, 33.018, 40.476)" fill="#fff"/>
<rect id="Rectangle_181" data-name="Rectangle 181" width="1.226" height="2.453" transform="translate(27.33 36.698) rotate(109.999)" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

@ -1,5 +0,0 @@
<svg id="out_patient" xmlns="http://www.w3.org/2000/svg" width="33.545" height="33.544" viewBox="0 0 33.545 33.544">
<path id="Path_55" data-name="Path 55" d="M32.921,17.231H24.432a3.234,3.234,0,0,0,.832-4.611,10.233,10.233,0,0,0,.624-3.5V7.771a6.771,6.771,0,0,0-10.28-5.79,6.771,6.771,0,0,0-10.28,5.79v.12l-.541-.947L2.435,11.06a2.705,2.705,0,0,0,2.933,3.949A3.249,3.249,0,0,0,8.207,17.75a7.593,7.593,0,0,0,4.7,5.466v1.138l-4.538.826A8.965,8.965,0,0,0,1,34v.541H30.216V34a8.965,8.965,0,0,0-7.365-8.824l-4.538-.826V23.217A7.537,7.537,0,0,0,21.235,21.2c.027.012.056.017.082.03a3.113,3.113,0,0,0,1.388.328H32.921a1.625,1.625,0,0,0,1.623-1.623V18.854A1.625,1.625,0,0,0,32.921,17.231Zm-9.766-.609c.01-.158.028-.315.028-.473v-3.71a2.155,2.155,0,0,1-.028,4.183ZM6.41,9.116V7.771a5.688,5.688,0,0,1,8.844-4.733l.354.236.354-.236a5.688,5.688,0,0,1,8.844,4.733V9.116a9.166,9.166,0,0,1-.4,2.687,3.228,3.228,0,0,0-1.22-.474v-.86L21.018,8.845V7.492A1.083,1.083,0,0,0,19.936,6.41H11.28A1.083,1.083,0,0,0,10.2,7.492V8.845L8.034,10.468v.858a3.2,3.2,0,0,0-.688.205,2.642,2.642,0,0,0-.206-.471l-.7-1.219c-.018-.24-.032-.482-.032-.725Zm13.527,1.623H11.28V7.492h8.657ZM4.761,13.985A1.6,1.6,0,0,1,3.375,11.6L4.787,9.124,6.2,11.6a1.6,1.6,0,0,1-1.439,2.389Zm1.65.542a2.664,2.664,0,0,0,1.053-1.851,2.119,2.119,0,0,1,.57-.239v3.713c0,.159.014.315.024.472A2.164,2.164,0,0,1,6.41,14.527Zm2.705,1.623v-5.14L10.2,10.2v.541a1.083,1.083,0,0,0,1.082,1.082h8.657a1.083,1.083,0,0,0,1.082-1.082V10.2l1.082.812v5.14a6.546,6.546,0,0,1-.116,1.168,3.114,3.114,0,0,0-.667.242,2.034,2.034,0,0,1-.9.213H16.69a1.623,1.623,0,1,0,0,3.246h3.2A6.482,6.482,0,0,1,9.116,16.149Zm7.575,3.787a.541.541,0,1,1,0-1.082h.541v1.082Zm-3.525,5.47a2.707,2.707,0,0,0,1.8,1.479A2.165,2.165,0,0,1,12.9,28.052c-1.194,0-2.164-.728-2.164-1.623a1.22,1.22,0,0,1,.174-.613Zm15.951,8.056H2.1a7.884,7.884,0,0,1,6.458-7.219l1.136-.207a2.173,2.173,0,0,0-.037.392A3.016,3.016,0,0,0,12.9,29.134a3.453,3.453,0,0,0,2.705-1.213,3.453,3.453,0,0,0,2.705,1.213,3.016,3.016,0,0,0,3.246-2.705,2.212,2.212,0,0,0-.037-.391l1.136.207A7.882,7.882,0,0,1,29.116,33.462ZM20.3,25.816a1.22,1.22,0,0,1,.174.613c0,.895-.971,1.623-2.164,1.623a2.165,2.165,0,0,1-2.066-1.166,2.7,2.7,0,0,0,1.8-1.479Zm-3.072-2.092v.541a1.623,1.623,0,1,1-3.246,0v-.721a7.467,7.467,0,0,0,3.246,0Zm4.57-3.46a3.115,3.115,0,0,0-1.388-.327h-2.1V18.854h2.1a3.122,3.122,0,0,0,1.388-.327,2.034,2.034,0,0,1,.9-.214h7.511v2.164H22.705A2.033,2.033,0,0,1,21.8,20.264Zm11.661-.327a.542.542,0,0,1-.541.541H31.3V18.313h1.623a.542.542,0,0,1,.541.541Z" transform="translate(-1 -1)"/>
<path id="Path_56" data-name="Path 56" d="M0,0H1.082V3.9H0Z" transform="matrix(0.555, -0.832, 0.832, 0.555, 15.936, 12.357)"/>
<path id="Path_57" data-name="Path 57" d="M0,0H3.9V1.082H0Z" transform="matrix(0.832, -0.555, 0.555, 0.832, 9.442, 13.613)"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="45.999" height="37.607" viewBox="0 0 45.999 37.607">
<g id="patient" transform="translate(0 -46.705)">
<circle id="Ellipse_155" data-name="Ellipse 155" cx="0.814" cy="0.814" r="0.814" transform="translate(15.059 58.613) rotate(-5.682)" fill="#fff"/>
<circle id="Ellipse_156" data-name="Ellipse 156" cx="0.814" cy="0.814" r="0.814" transform="translate(20.602 58.61) rotate(-5.682)" fill="#fff"/>
<path id="Path_221" data-name="Path 221" d="M189.1,219.565h-2.446a.679.679,0,1,0,0,1.359H189.1a.679.679,0,1,0,0-1.359Z" transform="translate(-169.262 -157.33)" fill="#fff"/>
<path id="Path_222" data-name="Path 222" d="M44.72,49.777H42.667V48.064h2.652a.679.679,0,0,0,0-1.359H10.394a.679.679,0,1,0,0,1.359H41.308v1.713H39.256a1.28,1.28,0,0,0-1.278,1.278v5.912a4.013,4.013,0,0,0,2.089,3.519l-.444.714a3.645,3.645,0,0,0-.161,3.54l1.846,3.671a2.277,2.277,0,0,1-.47,2.664L37.46,74.132V61.03a1.9,1.9,0,0,0-1.9-1.9H33.6a6.623,6.623,0,0,0-.228-.981,1.7,1.7,0,0,1-.04-.865l.5-2.324a1.325,1.325,0,0,0-1.574-1.574c-.7.093-2.428.7-3.146.44a6.666,6.666,0,0,0-.82-.215.68.68,0,0,0-.26,1.334,5.288,5.288,0,0,1,.652.171,3.048,3.048,0,0,0,1.6.085l2.208-.476L32,57c-.255.974.334,2.024.314,3.15v7.028a5.294,5.294,0,0,1-.247,1.6,3.034,3.034,0,0,0-.112.5,8.639,8.639,0,0,0-5.744-2.18H23.3v-.668a6.565,6.565,0,0,0,1.887-3.463,3.718,3.718,0,0,0,2.126-2.286,2.607,2.607,0,0,0-1.471-3.362h0a1.652,1.652,0,0,0-.529-.082V54.008a3.583,3.583,0,0,0-3.579-3.579H15.7a3.584,3.584,0,0,0-3.541,3.061H10.415c-.961-.1-1.932.484-2.981.384l-2.259-.487A1.325,1.325,0,0,0,3.6,54.962l.5,2.324a1.7,1.7,0,0,1-.04.865,6.619,6.619,0,0,0-.228.981H2.11v-9.6a1.466,1.466,0,0,1,1.464-1.464H7.268a.679.679,0,1,0,0-1.359H3.574A2.826,2.826,0,0,0,.751,49.528v9.993A1.894,1.894,0,0,0,0,61.03L.017,83.124a1.19,1.19,0,0,0,1.188,1.188H36.261a1.19,1.19,0,0,0,1.188-1.188l.01-7.159,4.294-3.885.009-.008a3.644,3.644,0,0,0,.759-4.27L40.676,64.13a2.277,2.277,0,0,1,.1-2.212l.613-.985a4.024,4.024,0,0,0,.6.045h0a4.012,4.012,0,0,0,3.429-1.932A4.2,4.2,0,0,0,46,56.968V51.055A1.28,1.28,0,0,0,44.72,49.777ZM36.1,61.03V75.362l-.743.672q-.232-.21-.472-.41a8.62,8.62,0,0,0-1.321-4.443,4.39,4.39,0,0,1-.2-1.988,6.65,6.65,0,0,0,.311-2.015V60.491h1.887a.539.539,0,0,1,.539.539ZM15.493,67.449a6.586,6.586,0,0,0,6.445,0v1.234a.558.558,0,0,1-.558.558h-5.33a.558.558,0,0,1-.558-.558Zm9.925-8.829a1.261,1.261,0,0,1,.6,1.649c-.231.71-.957,1.433-1.465,1.458a.679.679,0,0,0-.641.6,5.233,5.233,0,0,1-10.391,0,.679.679,0,0,0-.641-.6c-.508-.026-1.234-.748-1.465-1.458a1.261,1.261,0,0,1,.6-1.649.246.246,0,0,1,.072-.017c.044,0,.083.032.163.143a.679.679,0,0,0,.76.253c.351-.1.54-.594.473-1.067a2.614,2.614,0,0,1,2.611-2.611H21.34a2.614,2.614,0,0,1,2.611,2.611c-.015.362-.042.845.473,1.067a.679.679,0,0,0,.76-.253c.117-.164.147-.155.235-.126ZM13.481,54.008a2.222,2.222,0,0,1,2.22-2.22h6.03a2.222,2.222,0,0,1,2.22,2.22v.938a3.953,3.953,0,0,0-2.611-.983H16.092a3.953,3.953,0,0,0-2.611.983ZM7.148,55.2a3.052,3.052,0,0,0,1.6-.085,5.28,5.28,0,0,1,1.666-.268h1.707v2.4a1.644,1.644,0,0,0-.529.082,2.607,2.607,0,0,0-1.471,3.362,3.717,3.717,0,0,0,2.126,2.286,6.565,6.565,0,0,0,1.887,3.463v.668H11.219a8.639,8.639,0,0,0-5.744,2.18,3.039,3.039,0,0,0-.112-.5,5.3,5.3,0,0,1-.247-1.6V60.149c-.058-.972.566-2.032.314-3.15l-.49-2.272ZM1.359,61.03a.539.539,0,0,1,.539-.539H3.756v6.686a6.65,6.65,0,0,0,.311,2.015,4.578,4.578,0,0,1-.2,1.988A8.62,8.62,0,0,0,2.546,75.63q-.407.339-.793.707a5.567,5.567,0,0,0-.394.419V61.03ZM36.09,82.953H1.376V80.408a4.3,4.3,0,0,1,1.317-3.09A13.521,13.521,0,0,1,9.443,73.8a.679.679,0,1,0-.263-1.333,14.835,14.835,0,0,0-5.174,2.089,7.327,7.327,0,0,1,7.212-6.1h2.916v.218A1.919,1.919,0,0,0,16.051,70.6h5.33A1.919,1.919,0,0,0,23.3,68.683v-.218h2.916a7.326,7.326,0,0,1,7.211,6.087,14.856,14.856,0,0,0-8.066-2.362H12.481a.679.679,0,1,0,0,1.359H25.358a13.5,13.5,0,0,1,8.415,2.922l.019.015q.512.407.989.867a4.3,4.3,0,0,1,1.31,3.082v2.518Zm8.549-31.817V53.01h-5.3V51.136ZM44.431,58a2.765,2.765,0,0,1-2.443,1.62,2.654,2.654,0,0,1-2.651-2.651v-2.6h5.3v2.6A2.644,2.644,0,0,1,44.431,58Z" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

@ -1 +0,0 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m496 144c-8.837 0-16-7.164-16-16v-82c0-7.72-6.28-14-14-14h-82c-8.837 0-16-7.164-16-16s7.163-16 16-16h82c25.364 0 46 20.636 46 46v82c0 8.836-7.163 16-16 16z"/><path d="m16 144c-8.837 0-16-7.164-16-16v-82c0-25.364 20.636-46 46-46h82c8.837 0 16 7.164 16 16s-7.163 16-16 16h-82c-7.72 0-14 6.28-14 14v82c0 8.836-7.163 16-16 16z"/><path d="m128 512h-82c-25.364 0-46-20.636-46-46v-82c0-8.836 7.163-16 16-16s16 7.164 16 16v82c0 7.72 6.28 14 14 14h82c8.837 0 16 7.164 16 16s-7.163 16-16 16z"/><path d="m466 512h-82c-8.837 0-16-7.164-16-16s7.163-16 16-16h82c7.72 0 14-6.28 14-14v-82c0-8.836 7.163-16 16-16s16 7.164 16 16v82c0 25.364-20.636 46-46 46z"/><path d="m194 240h-84c-25.364 0-46-20.636-46-46v-84c0-25.364 20.636-46 46-46h84c25.364 0 46 20.636 46 46v84c0 25.364-20.636 46-46 46zm-84-144c-7.72 0-14 6.28-14 14v84c0 7.72 6.28 14 14 14h84c7.72 0 14-6.28 14-14v-84c0-7.72-6.28-14-14-14z"/><path d="m194 448h-84c-25.364 0-46-20.636-46-46v-84c0-25.364 20.636-46 46-46h84c25.364 0 46 20.636 46 46v84c0 25.364-20.636 46-46 46zm-84-144c-7.72 0-14 6.28-14 14v84c0 7.72 6.28 14 14 14h84c7.72 0 14-6.28 14-14v-84c0-7.72-6.28-14-14-14z"/><path d="m402 240h-84c-25.364 0-46-20.636-46-46v-84c0-25.364 20.636-46 46-46h84c25.364 0 46 20.636 46 46v84c0 25.364-20.636 46-46 46zm-84-144c-7.72 0-14 6.28-14 14v84c0 7.72 6.28 14 14 14h84c7.72 0 14-6.28 14-14v-84c0-7.72-6.28-14-14-14z"/><path d="m422 352h-38v-54c0-14.336-11.663-26-26-26h-60c-14.337 0-26 11.664-26 26v60c0 14.336 11.663 26 26 26h54v38c0 14.336 11.663 26 26 26h44c14.337 0 26-11.664 26-26v-44c0-14.336-11.663-26-26-26zm-118-48h48v48h-48zm112 112h-32v-32h32z"/><path d="m160 176h-16c-8.837 0-16-7.164-16-16v-16c0-8.836 7.163-16 16-16h16c8.837 0 16 7.164 16 16v16c0 8.836-7.163 16-16 16z"/><path d="m368 176h-16c-8.837 0-16-7.164-16-16v-16c0-8.836 7.163-16 16-16h16c8.837 0 16 7.164 16 16v16c0 8.836-7.163 16-16 16z"/><path d="m160 384h-16c-8.837 0-16-7.164-16-16v-16c0-8.836 7.163-16 16-16h16c8.837 0 16 7.164 16 16v16c0 8.836-7.163 16-16 16z"/></g></svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,27 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30.516" height="28.567" viewBox="0 0 30.516 28.567">
<g id="radiology" transform="translate(-8.242 -10.661)">
<path id="Path_112" data-name="Path 112" d="M8.513,22.676a.271.271,0,0,1-.211-.44c4.153-5.2,7.237-6.412,10.219-7.582l.186-.073c1.181-.465,1.841-1.7,1.966-3.66a.274.274,0,0,1,.287-.253.271.271,0,0,1,.253.287c-.138,2.192-.915,3.582-2.308,4.13l-.186.073C15.8,16.3,12.788,17.489,8.726,22.575a.271.271,0,0,1-.213.1Z" transform="translate(0 -0.005)" fill="#fff"/>
<path id="Path_113" data-name="Path 113" d="M17.123,74.542l-.033,0a.271.271,0,0,1-.236-.3c.006-.048.588-4.831.586-6.746,0-1.649-.5-6.035-.684-7.564-.708.668-2.181,2.043-2.833,2.546a13.085,13.085,0,0,1-1.2.773l-.357.214a.271.271,0,1,1-.28-.464l.359-.217a12.736,12.736,0,0,0,1.151-.736c.834-.643,3.159-2.857,3.182-2.879a.271.271,0,0,1,.456.162c.031.249.751,6.129.752,8.163,0,1.95-.566,6.614-.59,6.812a.271.271,0,0,1-.268.239Z" transform="translate(-2.701 -35.315)" fill="#fff"/>
<path id="Path_114" data-name="Path 114" d="M85.727,22.671a.271.271,0,0,1-.212-.1c-4.062-5.086-7.078-6.272-9.994-7.418l-.186-.073c-1.394-.549-2.17-1.938-2.308-4.13a.271.271,0,0,1,.542-.034c.124,1.964.785,3.2,1.966,3.66l.185.073C78.7,15.82,81.787,17.031,85.94,22.23a.271.271,0,0,1-.212.44Z" transform="translate(-47.241 0)" fill="#fff"/>
<path id="Path_115" data-name="Path 115" d="M95.8,74.544a.271.271,0,0,1-.268-.237c-.024-.2-.6-4.864-.6-6.813,0-2.035.722-7.914.752-8.163a.271.271,0,0,1,.456-.162c.023.022,2.348,2.236,3.182,2.879a12.8,12.8,0,0,0,1.151.737l.358.215a.271.271,0,0,1-.28.464l-.357-.214a13.11,13.11,0,0,1-1.2-.773c-.652-.5-2.125-1.878-2.833-2.546-.181,1.529-.683,5.915-.684,7.564,0,1.915.59,6.7.6,6.745a.271.271,0,0,1-.235.3l-.034,0Z" transform="translate(-63.215 -35.317)" fill="#fff"/>
<path id="Path_116" data-name="Path 116" d="M43.1,71.94a2.753,2.753,0,0,1-2.63-1.192.542.542,0,0,1,.977-.468c.278.581,1.915.9,3.95.107a.542.542,0,1,1,.395,1.009A7.515,7.515,0,0,1,43.1,71.94Z" transform="translate(-23.459 -43.25)" fill="#fff"/>
<path id="Path_117" data-name="Path 117" d="M40.742,79.181a4.787,4.787,0,0,1-1.557-.247,2.562,2.562,0,0,1-1.522-1.18.542.542,0,1,1,.977-.468,1.529,1.529,0,0,0,.9.623,4.889,4.889,0,0,0,3.768-.463.542.542,0,0,1,.483.969A6.909,6.909,0,0,1,40.742,79.181Z" transform="translate(-21.415 -48.358)" fill="#fff"/>
<path id="Path_118" data-name="Path 118" d="M39.275,87.528a2.189,2.189,0,0,1-1.1-.272,2.481,2.481,0,0,1-.962-2.766.542.542,0,0,1,1.067.186c-.14.805.017,1.4.432,1.64.584.334,1.916.09,3.9-1.6a.542.542,0,0,1,.7.826c-1.836,1.559-3.15,1.986-4.041,1.986Z" transform="translate(-21.076 -53.509)" fill="#fff"/>
<path id="Path_119" data-name="Path 119" d="M68.31,60.346q-.325,0-.666-.014a.542.542,0,0,1,.044-1.083c3.907.159,5.554-1.153,5.675-1.551a.542.542,0,0,1,.99-.437,1.063,1.063,0,0,1-.12,1.1C73.578,59.376,71.512,60.346,68.31,60.346Z" transform="translate(-42.935 -33.766)" fill="#fff"/>
<path id="Path_120" data-name="Path 120" d="M68,53.587H67.91a.542.542,0,1,1,0-1.083c.027,0,.054,0,.081,0,3.116,0,3.665-.645,3.744-.775.023-.038.077-.129-.019-.31a.542.542,0,1,1,.957-.508,1.369,1.369,0,0,1-.011,1.378C72.138,53.163,70.61,53.587,68,53.587Z" transform="translate(-43.115 -29.141)" fill="#fff"/>
<path id="Path_121" data-name="Path 121" d="M60.957,32.12a.542.542,0,0,0-1.076-.089,1.915,1.915,0,0,1-.542.272V30.9a.542.542,0,1,0-1.083,0v1.4a1.9,1.9,0,0,1-.542-.273.542.542,0,0,0-1.076.089c0,.717.881,1.119,1.618,1.329V42a.542.542,0,1,0,1.083,0V33.449C60.076,33.238,60.957,32.836,60.957,32.12Z" transform="translate(-35.291 -14.363)" fill="#fff"/>
<path id="Path_122" data-name="Path 122" d="M50.32,40.445h.028a.542.542,0,1,0,.027-1.083c-1.909-.1-2.479-.576-2.541-.718a.542.542,0,0,0-.967-.487,1.052,1.052,0,0,0,.029,1.029C47.185,39.694,48.013,40.325,50.32,40.445Z" transform="translate(-28.078 -19.841)" fill="#fff"/>
<path id="Path_123" data-name="Path 123" d="M41.749,59.25c-3.91.159-5.554-1.153-5.675-1.551a.542.542,0,0,0-.99-.437,1.063,1.063,0,0,0,.12,1.1c.653,1.018,2.719,1.988,5.922,1.988q.325,0,.666-.014a.542.542,0,0,0-.044-1.083Z" transform="translate(-19.501 -33.766)" fill="#fff"/>
<path id="Path_124" data-name="Path 124" d="M46.395,53.587h.086a.542.542,0,0,0,0-1.083h0c-3.2.008-3.744-.643-3.824-.774-.023-.038-.078-.129.018-.31a.542.542,0,0,0-.957-.508,1.369,1.369,0,0,0,.011,1.377C42.254,53.163,43.781,53.587,46.395,53.587Z" transform="translate(-24.276 -29.141)" fill="#fff"/>
<path id="Path_125" data-name="Path 125" d="M67.623,40.45h.027c2.307-.12,3.135-.751,3.423-1.259a1.051,1.051,0,0,0,.029-1.029.542.542,0,0,0-.967.487c-.062.141-.632.619-2.541.718a.542.542,0,0,0,.027,1.083Z" transform="translate(-42.894 -19.844)" fill="#fff"/>
<path id="Path_126" data-name="Path 126" d="M47.365,44.825h0c-3.014.011-3.528-.6-3.6-.721-.019-.032-.065-.108.018-.266a.542.542,0,1,0-.957-.508,1.327,1.327,0,0,0,.011,1.334c.505.837,1.961,1.246,4.451,1.246h.081a.542.542,0,0,0,0-1.083Z" transform="translate(-25.089 -23.613)" fill="#fff"/>
<path id="Path_127" data-name="Path 127" d="M72.226,43.33a.542.542,0,1,0-.957.508c.084.158.038.234.018.266-.073.121-.585.721-3.524.721-.027,0-.051,0-.079,0a.542.542,0,0,0,0,1.083h.081c2.489,0,3.945-.406,4.451-1.246A1.327,1.327,0,0,0,72.226,43.33Z" transform="translate(-42.949 -23.612)" fill="#fff"/>
<path id="Path_128" data-name="Path 128" d="M70.671,71.945A7.514,7.514,0,0,1,67.98,71.4a.542.542,0,1,1,.395-1.009c2.034.8,3.671.474,3.95-.107a.542.542,0,1,1,.977.468A2.757,2.757,0,0,1,70.671,71.945Z" transform="translate(-43.309 -43.256)" fill="#fff"/>
<path id="Path_129" data-name="Path 129" d="M70.982,79.184a6.909,6.909,0,0,1-3.046-.765.542.542,0,0,1,.483-.969,4.886,4.886,0,0,0,3.768.463,1.529,1.529,0,0,0,.9-.623.542.542,0,1,1,.977.468,2.562,2.562,0,0,1-1.522,1.179,4.788,4.788,0,0,1-1.557.248Z" transform="translate(-43.31 -48.361)" fill="#fff"/>
<path id="Path_130" data-name="Path 130" d="M72.762,87.529c-.89,0-2.205-.427-4.041-1.986a.542.542,0,0,1,.7-.826c1.988,1.689,3.32,1.933,3.9,1.6.415-.237.572-.835.432-1.64a.542.542,0,1,1,1.067-.186,2.481,2.481,0,0,1-.961,2.766A2.191,2.191,0,0,1,72.762,87.529Z" transform="translate(-43.961 -53.509)" fill="#fff"/>
<rect id="Rectangle_157" data-name="Rectangle 157" width="1.361" height="1" rx="0.5" transform="translate(22.841 28.722)" fill="#fff"/>
<rect id="Rectangle_158" data-name="Rectangle 158" width="1.361" height="1" rx="0.5" transform="translate(22.819 30.463)" fill="#fff"/>
<rect id="Rectangle_159" data-name="Rectangle 159" width="1.361" height="1" rx="0.5" transform="translate(22.797 32.205)" fill="#fff"/>
<path id="Path_131" data-name="Path 131" d="M41.306,44.015H23.053a2.938,2.938,0,0,1-2.935-2.935V22.827a2.938,2.938,0,0,1,2.935-2.935H41.306a2.938,2.938,0,0,1,2.935,2.935V41.08A2.938,2.938,0,0,1,41.306,44.015ZM23.053,20.434a2.4,2.4,0,0,0-2.393,2.393V41.08a2.4,2.4,0,0,0,2.393,2.393H41.306A2.4,2.4,0,0,0,43.7,41.08V22.827a2.4,2.4,0,0,0-2.393-2.393Z" transform="translate(-8.66 -6.732)" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

@ -1,6 +0,0 @@
<svg id="referral" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
<path id="Path_212" data-name="Path 212" d="M46.689,39.083a3.221,3.221,0,0,0,1.692-2.815,3.316,3.316,0,0,0-6.63,0,3.221,3.221,0,0,0,1.692,2.815,4.983,4.983,0,0,0-3.355,4.7v2.234a.5.5,0,0,0,.5.5h8.956a.5.5,0,0,0,.5-.5V43.783a4.982,4.982,0,0,0-3.354-4.7Zm-3.938-2.815A2.316,2.316,0,1,1,45.066,38.5,2.277,2.277,0,0,1,42.751,36.268Zm6.293,9.25H41.087V43.783a3.978,3.978,0,0,1,7.956,0Z" transform="translate(-20.044 -16.518)" fill="#fff"/>
<path id="Path_213" data-name="Path 213" d="M46.691,6.046a3.22,3.22,0,0,0,1.69-2.814,3.316,3.316,0,0,0-6.63,0,3.22,3.22,0,0,0,1.69,2.814,4.983,4.983,0,0,0-3.353,4.7V12.98a.5.5,0,0,0,.5.5h8.956a.5.5,0,0,0,.5-.5V10.746a4.982,4.982,0,0,0-3.353-4.7Zm-3.94-2.814a2.316,2.316,0,0,1,4.629,0,2.316,2.316,0,0,1-4.629,0Zm6.293,9.248H41.087V10.746a3.978,3.978,0,0,1,7.956,0Z" transform="translate(-20.044 0)" fill="#fff"/>
<path id="Path_214" data-name="Path 214" d="M27.26,26.256l2.812-2.423a.5.5,0,0,0-.653-.757L26.3,25.766H22.779a.5.5,0,1,0,0,1H26.3l3.124,2.561a.558.558,0,0,0,.7-.07.487.487,0,0,0-.07-.7Z" transform="translate(-11.14 -11.477)" fill="#fff"/>
<path id="Path_215" data-name="Path 215" d="M8.772,20.858A3.778,3.778,0,0,0,9.7,18.376a3.859,3.859,0,0,0-7.718,0,3.776,3.776,0,0,0,.931,2.482A5.515,5.515,0,0,0,0,25.674v2.941a.5.5,0,0,0,.5.5H11.188a.5.5,0,0,0,.5-.5V25.674A5.516,5.516,0,0,0,8.772,20.858Zm-2.929-5.3a2.821,2.821,0,1,1-2.859,2.82A2.843,2.843,0,0,1,5.844,15.556Zm-.539,6.6a3.92,3.92,0,0,0,.539.042,3.843,3.843,0,0,0,.54-.042v2.339l-.54.691L5.3,24.493Zm5.383,5.96H9.116V25.664a.5.5,0,0,0-1,0v2.451H3.572V25.664a.5.5,0,0,0-1,0v2.451H1V25.674a4.514,4.514,0,0,1,2.744-4.1,3.866,3.866,0,0,0,.561.3v2.961L5.45,26.3a.5.5,0,0,0,.787,0l1.145-1.466V21.877a3.893,3.893,0,0,0,.561-.3,4.516,4.516,0,0,1,2.744,4.1v2.441Z" transform="translate(0 -7.278)" fill="#fff"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26.003" height="26.615" viewBox="0 0 26.003 26.615">
<g id="scdedule_icon_active" transform="translate(0.333 0.341)">
<path id="Path_216" data-name="Path 216" d="M194.569,281.767a.766.766,0,0,0,1.083,0l2.734-2.734a.766.766,0,1,0-1.083-1.083l-2.192,2.192-1-1a.766.766,0,1,0-1.083,1.083Zm0,0" transform="translate(-183.038 -263.659)" fill="#fff"/>
<path id="Path_217" data-name="Path 217" d="M136.184,211.974a6.079,6.079,0,1,0-6.079-6.079A6.086,6.086,0,0,0,136.184,211.974Zm0-10.626a4.547,4.547,0,1,1-4.548,4.547A4.552,4.552,0,0,1,136.184,201.348Zm0,0" transform="translate(-123.516 -189.696)" fill="#fff"/>
<path id="Path_218" data-name="Path 218" d="M23.462,1.673H22.028V.786a.786.786,0,0,0-1.572,0v.888H18.912V.786a.786.786,0,0,0-1.572,0v.888H8.663V.786a.786.786,0,0,0-1.572,0v.888H5.547V.786a.786.786,0,0,0-1.572,0v.888H2.541A2.544,2.544,0,0,0,0,4.215V24.073a2.544,2.544,0,0,0,2.541,2.541h20.92A2.544,2.544,0,0,0,26,24.073V4.215A2.544,2.544,0,0,0,23.462,1.673Zm.97,22.4a.971.971,0,0,1-.97.97H2.541a.971.971,0,0,1-.97-.97V8.208h22.86ZM1.572,4.215a.971.971,0,0,1,.97-.97H3.975v.888a.786.786,0,0,0,1.572,0V3.245H7.091v.888a.786.786,0,0,0,1.572,0V3.245h8.678v.888a.786.786,0,0,0,1.572,0V3.245h1.544v.888a.786.786,0,0,0,1.572,0V3.245h1.433a.971.971,0,0,1,.97.97V6.636H1.572Zm0,0" transform="translate(-0.333 -0.341)" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

@ -1,5 +0,0 @@
<svg id="schedule_icon" xmlns="http://www.w3.org/2000/svg" width="26.004" height="26.615" viewBox="0 0 26.004 26.615">
<path id="Path_216" data-name="Path 216" d="M194.615,281.873a.786.786,0,0,0,1.111,0l2.806-2.806a.786.786,0,0,0-1.111-1.112l-2.25,2.25-1.026-1.026a.786.786,0,0,0-1.112,1.112Zm0,0" transform="translate(-182.781 -263.289)"/>
<path id="Path_217" data-name="Path 217" d="M136.344,212.294a6.239,6.239,0,1,0-6.239-6.239A6.246,6.246,0,0,0,136.344,212.294Zm0-10.906a4.667,4.667,0,1,1-4.667,4.667A4.672,4.672,0,0,1,136.344,201.388Zm0,0" transform="translate(-123.342 -189.429)"/>
<path id="Path_218" data-name="Path 218" d="M23.462,1.673H22.029V.786a.786.786,0,1,0-1.572,0v.888H18.913V.786a.786.786,0,0,0-1.572,0v.888H8.663V.786a.786.786,0,0,0-1.572,0v.888H5.547V.786a.786.786,0,0,0-1.572,0v.888H2.541A2.544,2.544,0,0,0,0,4.215V24.074a2.544,2.544,0,0,0,2.541,2.541H23.462A2.544,2.544,0,0,0,26,24.074V4.215A2.544,2.544,0,0,0,23.462,1.673Zm.97,22.4a.971.971,0,0,1-.97.97H2.541a.971.971,0,0,1-.97-.97V8.208h22.86ZM1.572,4.215a.971.971,0,0,1,.97-.97H3.975v.888a.786.786,0,0,0,1.572,0V3.245H7.091v.888a.786.786,0,0,0,1.572,0V3.245h8.678v.888a.786.786,0,0,0,1.572,0V3.245h1.544v.888a.786.786,0,0,0,1.572,0V3.245h1.433a.971.971,0,0,1,.97.97V6.636H1.572Zm0,0" transform="translate(0 0)"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,32 +0,0 @@
<svg id="search_patient" xmlns="http://www.w3.org/2000/svg" width="35.865" height="35.865" viewBox="0 0 35.865 35.865">
<g id="Group_321" data-name="Group 321" transform="translate(3.488 3.481)">
<g id="Group_320" data-name="Group 320">
<path id="Path_83" data-name="Path 83" d="M59.849,49.3A10.449,10.449,0,1,0,70.3,59.749,10.461,10.461,0,0,0,59.849,49.3Zm0,19.74a9.291,9.291,0,1,1,9.291-9.291A9.3,9.3,0,0,1,59.849,69.04Z" transform="translate(-49.4 -49.3)"/>
</g>
</g>
<g id="Group_323" data-name="Group 323" transform="translate(6.389 6.389)">
<g id="Group_322" data-name="Group 322">
<path id="Path_84" data-name="Path 84" d="M90.5,98.626h1.158a6.978,6.978,0,0,1,6.968-6.968V90.5A8.132,8.132,0,0,0,90.5,98.626Z" transform="translate(-90.5 -90.5)"/>
</g>
</g>
<g id="Group_325" data-name="Group 325">
<g id="Group_324" data-name="Group 324">
<path id="Path_85" data-name="Path 85" d="M35.046,31.763l.819-.819-8.31-8.317-.819.819-1.454-1.454A13.907,13.907,0,1,0,22,25.289l1.454,1.454-.819.819,8.3,8.3.819-.819-7.484-7.491,3.283-3.283ZM13.93,26.708A12.772,12.772,0,1,1,26.7,13.937,12.791,12.791,0,0,1,13.93,26.708Zm10.343-.8-1.348-1.341a13.923,13.923,0,0,0,1.645-1.645l1.348,1.348Z"/>
</g>
</g>
<g id="Group_327" data-name="Group 327" transform="translate(26.993 26.992)">
<g id="Group_326" data-name="Group 326" transform="translate(0 0)">
<rect id="Rectangle_143" data-name="Rectangle 143" width="1.158" height="1.158" transform="translate(0 0.819) rotate(-45)"/>
</g>
</g>
<g id="Group_329" data-name="Group 329" transform="translate(28.634 28.642)">
<g id="Group_328" data-name="Group 328" transform="translate(0 0)">
<rect id="Rectangle_144" data-name="Rectangle 144" width="1.158" height="1.158" transform="translate(0 0.819) rotate(-45)"/>
</g>
</g>
<g id="Group_331" data-name="Group 331" transform="translate(30.274 30.273)">
<g id="Group_330" data-name="Group 330" transform="translate(0 0)">
<rect id="Rectangle_145" data-name="Rectangle 145" width="1.158" height="1.158" transform="matrix(0.707, -0.707, 0.707, 0.707, 0, 0.819)"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

@ -34,20 +34,6 @@
"male" "male"
] ]
}, },
{
"uid": "0bbb324cc39e62b3a4e05639a4f4008f",
"css": "home_icon",
"code": 59394,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M973.1 435L973.1 435 565 27A92 92 0 0 0 434.9 27L27.2 434.7 26.8 435.1A92 92 0 0 0 88 591.9C88.9 591.9 89.9 591.9 90.8 591.9H107.1V892.1A107.9 107.9 0 0 0 214.8 999.9H374.4A29.3 29.3 0 0 0 403.7 970.6V735.3A49.2 49.2 0 0 1 452.9 686.2H547A49.2 49.2 0 0 1 596.2 735.3V970.7A29.3 29.3 0 0 0 625.5 1000H785.1A107.9 107.9 0 0 0 892.8 892.3V592H907.8A92.1 92.1 0 0 0 973 434.9ZM931.6 523.7A33.4 33.4 0 0 1 907.9 533.5H863.5A29.3 29.3 0 0 0 834.2 562.8V892.3A49.2 49.2 0 0 1 785.1 941.4H654.9V735.3A107.9 107.9 0 0 0 547 627.5H452.9A107.9 107.9 0 0 0 345.1 735.2V941.3H215A49.2 49.2 0 0 1 165.8 892.1V562.8A29.3 29.3 0 0 0 136.5 533.5H92.8L91.4 533.5A33.4 33.4 0 0 1 68.4 476.4H68.4L476.3 68.4A33.4 33.4 0 0 1 523.6 68.4L931.4 476.2 931.6 476.4A33.4 33.4 0 0 1 931.6 523.7ZM931.6 523.7",
"width": 1000
},
"search": [
"home_icon"
]
},
{ {
"uid": "06d6838cdcf6af812f2eb51e0269afc0", "uid": "06d6838cdcf6af812f2eb51e0269afc0",
"css": "home_icon_active", "css": "home_icon_active",
@ -383,6 +369,62 @@
"search": [ "search": [
"scdedule_icon_active" "scdedule_icon_active"
] ]
},
{
"uid": "5a324eddf382f5a1167d7d40325f82c8",
"css": "reject_icon",
"code": 59402,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M681 626.7L554.3 500 681 373.3A38.5 38.5 0 0 0 626.7 318.9L500 445.7 373.3 319A38.5 38.5 0 1 0 318.9 373.3L445.7 500 318.9 626.8A37.2 37.2 0 0 0 318.9 681.1 38.2 38.2 0 0 0 373.3 681.1L500 554.4 626.7 681.1A38.5 38.5 0 0 0 681.1 681.1 38.2 38.2 0 0 0 681 626.7ZM500 67.3A432.5 432.5 0 1 1 194 194 429.8 429.8 0 0 1 500 67.3M500 0A500 500 0 1 0 1000 500 500 500 0 0 0 500 0Z",
"width": 1000
},
"search": [
"reject_icon"
]
},
{
"uid": "2742f64b5e69cc4f39a2dcc5a081ad03",
"css": "approved_icon",
"code": 59403,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M756.3 348.3L714 304.8A9.1 9.1 0 0 0 707.2 302H707.2A8.7 8.7 0 0 0 700.5 304.8L407.2 600.3 300.5 493.5A9.3 9.3 0 0 0 287.1 493.5L244.2 536.3A9.6 9.6 0 0 0 244.2 550L378.8 684.5A42.6 42.6 0 0 0 406.9 698.2 44.6 44.6 0 0 0 434.8 685H435L756.5 362A10.3 10.3 0 0 0 756.3 348.3ZM500 67.3A432.5 432.5 0 1 1 194 194 429.8 429.8 0 0 1 500 67.3M500 0A499.9 499.9 0 1 0 999.9 500 499.9 499.9 0 0 0 500 0Z",
"width": 1000
},
"search": [
"approved_icon"
]
},
{
"uid": "148de09f7fd22c378cdfdbaacaa8e205",
"css": "pending_icon",
"code": 59404,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M809.8 932H797.3C781.5 932 768.2 929.8 766.5 914V913.7C731 583.9 523.3 577.6 523.3 499.9S731.1 415.9 766.5 86V85.9C768.2 70.1 781.5 68 797.3 68H809.8A34.8 34.8 0 0 0 844.7 35.7 34 34 0 0 0 810.7 0H35A34.8 34.8 0 0 0 0 32.3 34 34 0 0 0 34 68H47.2C63 68 76.3 70.2 78.1 85.9V86.2C113.7 416 321.5 422.3 321.5 500S113.7 584 78.3 913.8V914C76.6 929.8 63.3 932 47.5 932H35A34.8 34.8 0 0 0 0.1 964.3 34 34 0 0 0 34.1 1000H810.7A33.9 33.9 0 0 0 844.7 964.3 34.8 34.8 0 0 0 809.8 932ZM197.4 848.9C267 655.2 390.6 678.7 390.6 602.3V467.5C390.6 420.4 301.2 387.6 245.4 311.1A19 19 0 0 1 261.2 281H583.8A18.9 18.9 0 0 1 600 310.6C545.2 387.3 454.2 420.4 454.2 467.4V602.4C454.2 678.1 572.9 657.5 647.8 849 654.7 866.3 649.5 887.8 631.2 887.8H214.1C195.4 887.8 191.1 866.5 197.4 849Z",
"width": 845
},
"search": [
"pending_icon"
]
},
{
"uid": "0bbb324cc39e62b3a4e05639a4f4008f",
"css": "home_icon",
"code": 59394,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M973.1 435L973.1 435 565 27A92 92 0 0 0 434.9 27L27.2 434.7 26.8 435.1A92 92 0 0 0 88 591.9C88.9 591.9 89.9 591.9 90.8 591.9H107.1V892.1A107.9 107.9 0 0 0 214.8 999.9H374.4A29.3 29.3 0 0 0 403.7 970.6V735.3A49.2 49.2 0 0 1 452.9 686.2H547A49.2 49.2 0 0 1 596.2 735.3V970.7A29.3 29.3 0 0 0 625.5 1000H785.1A107.9 107.9 0 0 0 892.8 892.3V592H907.8A92.1 92.1 0 0 0 973 434.9ZM931.6 523.7A33.4 33.4 0 0 1 907.9 533.5H863.5A29.3 29.3 0 0 0 834.2 562.8V892.3A49.2 49.2 0 0 1 785.1 941.4H654.9V735.3A107.9 107.9 0 0 0 547 627.5H452.9A107.9 107.9 0 0 0 345.1 735.2V941.3H215A49.2 49.2 0 0 1 165.8 892.1V562.8A29.3 29.3 0 0 0 136.5 533.5H92.8L91.4 533.5A33.4 33.4 0 0 1 68.4 476.4H68.4L476.3 68.4A33.4 33.4 0 0 1 523.6 68.4L931.4 476.2 931.6 476.4A33.4 33.4 0 0 1 931.6 523.7ZM931.6 523.7",
"width": 1000
},
"search": [
"home_icon"
]
} }
] ]
} }

@ -2,10 +2,13 @@ import 'dart:convert';
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/interceptor/http_interceptor.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:http/http.dart'; import 'package:http/http.dart' as http;
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
Helpers helpers = new Helpers();
/* /*
*@author: Mohammad Aljammal *@author: Mohammad Aljammal
@ -14,6 +17,7 @@ import 'package:http/http.dart';
*@return: *@return:
*@desc: *@desc:
*/ */
///Example ///Example
/* /*
await BaseAppClient.post('', await BaseAppClient.post('',
@ -22,8 +26,6 @@ import 'package:http/http.dart';
body: null); body: null);
* */ * */
class BaseAppClient { class BaseAppClient {
static Client client = HttpInterceptor().getClient();
static post( static post(
String endPoint, { String endPoint, {
Map<String, dynamic> body, Map<String, dynamic> body,
@ -34,12 +36,15 @@ class BaseAppClient {
try { try {
Map profile = await sharedPref.getObj(DOCTOR_PROFILE); Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
if (profile != null) {
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
body['DoctorID'] = doctorProfile.doctorID; body['DoctorID'] = doctorProfile?.doctorID;
body['EditedBy'] = doctorProfile.doctorID; body['EditedBy'] = doctorProfile?.doctorID;
body['ProjectID'] = doctorProfile.projectID; body['ProjectID'] = doctorProfile?.projectID;
body['ClinicID'] = doctorProfile.clinicID; // if (!body.containsKey('ClinicID'))
body['TokenID'] = token; body['ClinicID'] = doctorProfile?.clinicID;
}
body['TokenID'] = token ?? '';
body['LanguageID'] = LANGUAGE_ID; body['LanguageID'] = LANGUAGE_ID;
body['stamp'] = STAMP; body['stamp'] = STAMP;
body['IPAdress'] = IP_ADDRESS; body['IPAdress'] = IP_ADDRESS;
@ -48,15 +53,26 @@ class BaseAppClient {
body['SessionID'] = SESSION_ID; body['SessionID'] = SESSION_ID;
body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP; body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP;
body['PatientOutSA'] = PATIENT_OUT_SA; body['PatientOutSA'] = PATIENT_OUT_SA;
print("URL : $url");
print("Body : ${json.encode(body)}");
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
final response = await client.post(url, body: json.encode(body)); final response = await http.post(url,
body: json.encode(body),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
});
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); var parsed = json.decode(response.body.toString());
if (parsed['MessageStatus'] == 1) { if (!parsed['IsAuthenticated']) {
await helpers.logout();
helpers.showErrorToast('Your session expired Please login agian');
} else if (parsed['MessageStatus'] == 1) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);
} else { } else {
onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'],

@ -1,6 +1,6 @@
const MAX_SMALL_SCREEN = 660; const MAX_SMALL_SCREEN = 660;
const ONLY_NUMBERS = "[0-9]"; const ONLY_NUMBERS = "[0-9]";
const ONLY_LETTERS = "[a-zA-Z]"; const ONLY_LETTERS = "[a-zA-Z &'\"]";
const ONLY_DATE = "[0-9/]"; const ONLY_DATE = "[0-9/]";
//const BASE_URL = 'https://hmgwebservices.com/Services/'; //const BASE_URL = 'https://hmgwebservices.com/Services/';
const BASE_URL = 'https://uat.hmgwebservices.com/Services/'; const BASE_URL = 'https://uat.hmgwebservices.com/Services/';
@ -12,6 +12,13 @@ const PATIENT_INSURANCE_APPROVALS_URL =
"DoctorApplication.svc/REST/GetApprovalStatusForInpatient"; "DoctorApplication.svc/REST/GetApprovalStatusForInpatient";
const PATIENT_ORDERS_URL = const PATIENT_ORDERS_URL =
"DoctorApplication.svc/REST/GetProgressNoteForInPatient"; "DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_REFER_TO_DOCTOR_URL = "DoctorApplication.svc/REST/ReferToDoctor";
const PATIENT_GET_DOCTOR_BY_CLINIC_URL =
"DoctorApplication.svc/REST/GetDoctorsByClinicID";
const PATIENT_GET_LIST_REFERAL_URL =
"Lists.svc/REST/GetList_STPReferralFrequency";
const PATIENT_GET_CLINIC_BY_PROJECT_URL =
"DoctorApplication.svc/REST/GetClinicsByProjectID";
const GET_PROJECTS = 'Lists.svc/REST/GetProjectForDoctorAPP'; const GET_PROJECTS = 'Lists.svc/REST/GetProjectForDoctorAPP';
const GET_PATIENT_VITAL_SIGN = 'Doctors.svc/REST/Doctor_GetPatientVitalSign'; const GET_PATIENT_VITAL_SIGN = 'Doctors.svc/REST/Doctor_GetPatientVitalSign';
@ -20,7 +27,7 @@ const GET_PATIENT_LAB_OREDERS =
const GET_PRESCRIPTION = 'Patients.svc/REST/GetPrescriptionApptList'; const GET_PRESCRIPTION = 'Patients.svc/REST/GetPrescriptionApptList';
const GET_RADIOLOGY = 'DoctorApplication.svc/REST/GetPatientRadResult'; const GET_RADIOLOGY = 'DoctorApplication.svc/REST/GetPatientRadResult';
var selectedPatientType = 0; var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************ //*********change value to decode json from Dropdown ************
var SERVICES_PATIANT = [ var SERVICES_PATIANT = [
@ -67,3 +74,7 @@ const PATIENT_OUT_SA = false;
/// Timer Info /// Timer Info
const TIMER_MIN = 10; const TIMER_MIN = 10;
class AppGlobal {
static var CONTEX;
}

@ -41,5 +41,19 @@ const Map<String, Map<String, String>> localizedValues = {
'inPatient': {'en': 'In-Patient', 'ar': 'االمريض الداخلي'}, 'inPatient': {'en': 'In-Patient', 'ar': 'االمريض الداخلي'},
'operations': {'en': 'Operations', 'ar': 'عمليات'}, 'operations': {'en': 'Operations', 'ar': 'عمليات'},
'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'}, 'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'},
'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'} 'searchMedicine': {'en': 'Search Medicine', 'ar': 'بحث عن الدواء'},
'myReferralPatient': {'en': 'My Referral Patient', 'ar': 'مرضى الاحالة'},
'myReferredPatient': {'en': 'My Referred Patient', 'ar': 'مرضاي المحالين'},
'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'},
'middleName': {'en': 'Middle Name', 'ar': 'اسم الاب'},
'lastName': {'en': 'Last Name', 'ar': 'اسم العائلة'},
'phoneNumber': {'en': 'Phone Number ', 'ar': 'رقم الجوال'},
'patientID': {'en': 'Patient ID', 'ar': 'رقم المريض'},
'patientFile': {'en': 'Patient File', 'ar': 'ملف المريض'},
'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'},
'search': {'en': 'Search', 'ar': 'بحث'},
'onlyArrivedPatient': {
'en': 'Only Arrived Patient',
'ar': 'المريض الذي حضر للموعد'
},
}; };

@ -51,14 +51,7 @@ class _LandingPageState extends State<LandingPage> {
}, },
), ),
centerTitle: true, centerTitle: true,
actions: <Widget>[
ProfileImageWidget(
height: 50,
width: 50,
url:
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
)
],
), ),
drawer: Theme( drawer: Theme(
data: Theme.of(context).copyWith( data: Theme.of(context).copyWith(

@ -11,6 +11,7 @@ import './providers/auth_provider.dart';
import './providers/patients_provider.dart'; import './providers/patients_provider.dart';
import './providers/hospital_provider.dart'; import './providers/hospital_provider.dart';
import './routes.dart'; import './routes.dart';
import 'config/config.dart';
void main() => runApp(MyApp()); void main() => runApp(MyApp());
@ -18,6 +19,7 @@ class MyApp extends StatelessWidget {
// This widget is the root of your application. // This widget is the root of your application.
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.CONTEX = context;
return LayoutBuilder( return LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
return OrientationBuilder(builder: (context, orientation) { return OrientationBuilder(builder: (context, orientation) {

@ -0,0 +1,80 @@
class ClinicByProjectIdRequest {
/*
*@author: Ibrahim Albitar
*@Date:03/06/2020
*@param:
*@return:
*@desc: ClinicByProjectIdRequest
*/
int projectID;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
int patientTypeID;
/*
{
"ProjectID": 21,
"LanguageID": 2,
"stamp": "2020-06-03T11:18:19.979Z",
"IPAdress": "11.11.11.11",
"VersionID": 1.2,
"Channel": 9,
"TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==",
"SessionID": "JBXRsDl37L",
"IsLoginForDoctorApp": true,
"PatientOutSA": false,
"PatientTypeID": 1
}
*/
ClinicByProjectIdRequest(
{this.projectID,
this.languageID = 2,
this.stamp = "2020-06-03T11:18:19.979Z",
this.iPAdress = "11.11.11.11",
this.versionID = 1.2,
this.channel = 9,
this.tokenID,
this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true,
this.patientOutSA = false,
this.patientTypeID = 1});
ClinicByProjectIdRequest.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
patientTypeID = json['PatientTypeID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
data['PatientTypeID'] = this.patientTypeID;
return data;
}
}

@ -0,0 +1,86 @@
class DoctorsByClinicIdRequest {
/*
*@author: Ibrahim Albitar
*@Date:03/06/2020
*@param:
*@return:
*@desc: DoctorsByClinicIdRequest
*/
int projectID;
String clinicID;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
int patientTypeID;
/*
{
"ProjectID": 21,
"ClinicID": "0",
"LanguageID": 2,
"stamp": "2020-06-03T11:22:04.702Z",
"IPAdress": "11.11.11.11",
"VersionID": 1.2,
"Channel": 9,
"TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==",
"SessionID": "JBXRsDl37L",
"IsLoginForDoctorApp": true,
"PatientOutSA": false,
"PatientTypeID": 1
}
*/
DoctorsByClinicIdRequest(
{this.projectID,
this.clinicID,
this.languageID = 2,
this.stamp = "2020-06-03T11:22:04.702Z",
this.iPAdress = "11.11.11.11",
this.versionID = 1.2,
this.channel = 9,
this.tokenID,
this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true,
this.patientOutSA = false,
this.patientTypeID = 1});
DoctorsByClinicIdRequest.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
clinicID = json['ClinicID'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
patientTypeID = json['PatientTypeID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['ClinicID'] = this.clinicID;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
data['PatientTypeID'] = this.patientTypeID;
return data;
}
}

@ -0,0 +1,75 @@
class STPReferralFrequencyRequest {
/*
*@author: Ibrahim Albitar
*@Date:03/06/2020
*@param:
*@return:
*@desc:
*/
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
int patientTypeID;
/*
{
"LanguageID": 2,
"stamp": "2020-06-03T11:18:19.986Z",
"IPAdress": "11.11.11.11",
"VersionID": 1.2,
"Channel": 9,
"TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==",
"SessionID": "JBXRsDl37L",
"IsLoginForDoctorApp": true,
"PatientOutSA": false,
"PatientTypeID": 1
}
*/
STPReferralFrequencyRequest(
{this.languageID = 2,
this.stamp = "2020-06-03T11:18:19.986Z",
this.iPAdress = "11.11.11.11",
this.versionID = 1.2,
this.channel = 9,
this.tokenID,
this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true,
this.patientOutSA = false,
this.patientTypeID = 1});
STPReferralFrequencyRequest.fromJson(Map<String, dynamic> json) {
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
patientTypeID = json['PatientTypeID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
data['PatientTypeID'] = this.patientTypeID;
return data;
}
}

@ -1,3 +1,5 @@
import 'package:doctor_app_flutter/util/helpers.dart';
class PrescriptionReportForInPatient { class PrescriptionReportForInPatient {
int admissionNo; int admissionNo;
int authorizedBy; int authorizedBy;
@ -25,7 +27,7 @@ class PrescriptionReportForInPatient {
int orderNo; int orderNo;
int patientID; int patientID;
String pharmacyRemarks; String pharmacyRemarks;
String prescriptionDatetime; DateTime prescriptionDatetime;
int prescriptionNo; int prescriptionNo;
String processedBy; String processedBy;
int projectID; int projectID;
@ -38,11 +40,11 @@ class PrescriptionReportForInPatient {
int routeId; int routeId;
Null routeN; Null routeN;
Null setupID; Null setupID;
String startDatetime; DateTime startDatetime;
int status; int status;
String statusDescription; String statusDescription;
Null statusDescriptionN; Null statusDescriptionN;
String stopDatetime; DateTime stopDatetime;
int unitofMeasurement; int unitofMeasurement;
String unitofMeasurementDescription; String unitofMeasurementDescription;
Null unitofMeasurementDescriptionN; Null unitofMeasurementDescriptionN;
@ -123,7 +125,7 @@ class PrescriptionReportForInPatient {
orderNo = json['OrderNo']; orderNo = json['OrderNo'];
patientID = json['PatientID']; patientID = json['PatientID'];
pharmacyRemarks = json['PharmacyRemarks']; pharmacyRemarks = json['PharmacyRemarks'];
prescriptionDatetime = json['PrescriptionDatetime']; prescriptionDatetime = Helpers.convertStringToDate(json['PrescriptionDatetime']);
prescriptionNo = json['PrescriptionNo']; prescriptionNo = json['PrescriptionNo'];
processedBy = json['ProcessedBy']; processedBy = json['ProcessedBy'];
projectID = json['ProjectID']; projectID = json['ProjectID'];
@ -136,11 +138,11 @@ class PrescriptionReportForInPatient {
routeId = json['RouteId']; routeId = json['RouteId'];
routeN = json['RouteN']; routeN = json['RouteN'];
setupID = json['SetupID']; setupID = json['SetupID'];
startDatetime = json['StartDatetime']; startDatetime = Helpers.convertStringToDate(json['StartDatetime']) ;
status = json['Status']; status = json['Status'];
statusDescription = json['StatusDescription']; statusDescription = json['StatusDescription'];
statusDescriptionN = json['StatusDescriptionN']; statusDescriptionN = json['StatusDescriptionN'];
stopDatetime = json['StopDatetime']; stopDatetime = Helpers.convertStringToDate(json['StopDatetime']);
unitofMeasurement = json['UnitofMeasurement']; unitofMeasurement = json['UnitofMeasurement'];
unitofMeasurementDescription = json['UnitofMeasurementDescription']; unitofMeasurementDescription = json['UnitofMeasurementDescription'];
unitofMeasurementDescriptionN = json['UnitofMeasurementDescriptionN']; unitofMeasurementDescriptionN = json['UnitofMeasurementDescriptionN'];

@ -0,0 +1,149 @@
import 'package:flutter/cupertino.dart';
class ReferToDoctorRequest {
/*
*@author: Ibrahim Albitar
*@Date:03/06/2020
*@param:
*@return:
*@desc: ReferToDoctor
*/
int projectID;
int admissionNo;
String roomID;
String referralClinic;
String referralDoctor;
int createdBy;
int editedBy;
int patientID;
int patientTypeID;
int referringClinic;
int referringDoctor;
String referringDoctorRemarks;
String priority;
String frequency;
String extension;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
/*
{
"ProjectID": 21,
"AdmissionNo": 2020005477,
"RoomID": "ISO-6",
"ReferralClinic": "36",
"ReferralDoctor": "230893",
"CreatedBy": 121814,
"EditedBy": 121814,
"PatientID": 3349491,
"PatientTypeID": 1,
"ReferringClinic": 14,
"ReferringDoctor": 121814,
"ReferringDoctorRemarks": "dfcdfdfdf",
"Priority": "1",
"Frequency": "1",
"Extension": "eeee",
"LanguageID": 2,
"stamp": "2020-06-03T11:26:42.358Z",
"IPAdress": "11.11.11.11",
"VersionID": 1.2,
"Channel": 9,
"TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==",
"SessionID": "JBXRsDl37L",
"IsLoginForDoctorApp": true,
"PatientOutSA": false
}
*/
ReferToDoctorRequest(
{@required this.projectID,
@required this.admissionNo,
@required this.roomID ,
@required this.referralClinic,
@required this.referralDoctor ,
@required this.createdBy,
@required this.editedBy ,
@required this.patientID,
@required this.patientTypeID,
@required this.referringClinic,
@required this.referringDoctor,
@required this.referringDoctorRemarks,
@required this.priority ,
@required this.frequency,
@required this.extension,
this.languageID = 2,
this.stamp = "2020-06-03T11:26:42.358Z",
this.iPAdress = "11.11.11.11",
this.versionID = 1.2,
this.channel = 9,
@required this.tokenID,
this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true,
this.patientOutSA = false});
ReferToDoctorRequest.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
admissionNo = json['AdmissionNo'];
roomID = json['RoomID'];
referralClinic = json['ReferralClinic'];
referralDoctor = json['ReferralDoctor'];
createdBy = json['CreatedBy'];
editedBy = json['EditedBy'];
patientID = json['PatientID'];
patientTypeID = json['PatientTypeID'];
referringClinic = json['ReferringClinic'];
referringDoctor = json['ReferringDoctor'];
referringDoctorRemarks = json['ReferringDoctorRemarks'];
priority = json['Priority'];
frequency = json['Frequency'];
extension = json['Extension'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['AdmissionNo'] = this.admissionNo;
data['RoomID'] = this.roomID;
data['ReferralClinic'] = this.referralClinic;
data['ReferralDoctor'] = this.referralDoctor;
data['CreatedBy'] = this.createdBy;
data['EditedBy'] = this.editedBy;
data['PatientID'] = this.patientID;
data['PatientTypeID'] = this.patientTypeID;
data['ReferringClinic'] = this.referringClinic;
data['ReferringDoctor'] = this.referringDoctor;
data['ReferringDoctorRemarks'] = this.referringDoctorRemarks;
data['Priority'] = this.priority;
data['Frequency'] = this.frequency;
data['Extension'] = this.extension;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
return data;
}
}

@ -5,55 +5,65 @@
*@return: *@return:
*@desc: *@desc:
*/ */
class PharmaciesItemsRequestModel { class PharmaciesItemsRequestModel {
String phrItemName; String pHRItemName;
int languageID; int pageIndex = 0;
String stamp; int pageSize = 20;
String ipAdress; double versionID = 5.2;
double versionID; int channel = 3;
String tokenID; int languageID = 2;
String sessionID; String iPAdress = "10.20.10.20";
bool isLoginForDoctorApp; String generalid = "Cs2020@2016\$2958";
bool patientOutSA; int patientOutSA = 0;
int patientTypeID; String sessionID = "KvFJENeAUCxyVdIfEkHw";
bool isDentalAllowedBackend = false;
int deviceTypeID = 2;
PharmaciesItemsRequestModel( PharmaciesItemsRequestModel(
{this.phrItemName = '', {this.pHRItemName,
this.patientTypeID = 1, this.pageIndex = 0,
this.languageID = 2, this.pageSize = 20,
this.stamp = '2020-04-23T21:01:21.492Z',
this.ipAdress = '10.20.10.20',
this.versionID = 5.2, this.versionID = 5.2,
this.tokenID , this.channel = 3,
this.languageID = 2,
this.iPAdress = "10.20.10.20",
this.generalid = "Cs2020@2016\$2958",
this.patientOutSA = 0,
this.sessionID = "KvFJENeAUCxyVdIfEkHw", this.sessionID = "KvFJENeAUCxyVdIfEkHw",
this.isLoginForDoctorApp = true, this.isDentalAllowedBackend = false,
this.patientOutSA = false}); this.deviceTypeID = 2});
PharmaciesItemsRequestModel.fromJson(Map<String, dynamic> json) { PharmaciesItemsRequestModel.fromJson(Map<String, dynamic> json) {
phrItemName = json['PHR_itemName']; pHRItemName = json['PHR_itemName'];
patientTypeID = json['PatientTypeID']; pageIndex = json['PageIndex'];
languageID = json['LanguageID']; pageSize = json['PageSize'];
stamp = json['stamp'];
ipAdress = json['IPAdress'];
versionID = json['VersionID']; versionID = json['VersionID'];
tokenID = json['TokenID']; channel = json['Channel'];
sessionID = json['SessionID']; languageID = json['LanguageID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp']; iPAdress = json['IPAdress'];
generalid = json['generalid'];
patientOutSA = json['PatientOutSA']; patientOutSA = json['PatientOutSA'];
sessionID = json['SessionID'];
isDentalAllowedBackend = json['isDentalAllowedBackend'];
deviceTypeID = json['DeviceTypeID'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['PHR_itemName'] = this.phrItemName; data['PHR_itemName'] = this.pHRItemName;
data['PatientTypeID'] = this.patientTypeID; data['PageIndex'] = this.pageIndex;
data['LanguageID'] = this.languageID; data['PageSize'] = this.pageSize;
data['stamp'] = this.stamp;
data['IPAdress'] = this.ipAdress;
data['VersionID'] = this.versionID; data['VersionID'] = this.versionID;
data['TokenID'] = this.tokenID; data['Channel'] = this.channel;
data['SessionID'] = this.sessionID; data['LanguageID'] = this.languageID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; data['IPAdress'] = this.iPAdress;
data['generalid'] = this.generalid;
data['PatientOutSA'] = this.patientOutSA; data['PatientOutSA'] = this.patientOutSA;
data['SessionID'] = this.sessionID;
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
data['DeviceTypeID'] = this.deviceTypeID;
return data; return data;
} }
} }

@ -0,0 +1,140 @@
class PrescriptionReport {
String address;
int appointmentNo;
String clinic;
String companyName;
int days;
String doctorName;
int doseDailyQuantity;
String frequency;
int frequencyNumber;
Null imageExtension;
Null imageSRCUrl;
Null imageString;
Null imageThumbUrl;
String isCovered;
String itemDescription;
int itemID;
String orderDate;
int patientID;
String patientName;
String phoneOffice1;
Null prescriptionQR;
int prescriptionTimes;
Null productImage;
String productImageBase64;
String productImageString;
int projectID;
String projectName;
String remarks;
String route;
String sKU;
int scaleOffset;
String startDate;
PrescriptionReport(
{this.address,
this.appointmentNo,
this.clinic,
this.companyName,
this.days,
this.doctorName,
this.doseDailyQuantity,
this.frequency,
this.frequencyNumber,
this.imageExtension,
this.imageSRCUrl,
this.imageString,
this.imageThumbUrl,
this.isCovered,
this.itemDescription,
this.itemID,
this.orderDate,
this.patientID,
this.patientName,
this.phoneOffice1,
this.prescriptionQR,
this.prescriptionTimes,
this.productImage,
this.productImageBase64,
this.productImageString,
this.projectID,
this.projectName,
this.remarks,
this.route,
this.sKU,
this.scaleOffset,
this.startDate});
PrescriptionReport.fromJson(Map<String, dynamic> json) {
address = json['Address'];
appointmentNo = json['AppointmentNo'];
clinic = json['Clinic'];
companyName = json['CompanyName'];
days = json['Days'];
doctorName = json['DoctorName'];
doseDailyQuantity = json['DoseDailyQuantity'];
frequency = json['Frequency'];
frequencyNumber = json['FrequencyNumber'];
imageExtension = json['ImageExtension'];
imageSRCUrl = json['ImageSRCUrl'];
imageString = json['ImageString'];
imageThumbUrl = json['ImageThumbUrl'];
isCovered = json['IsCovered'];
itemDescription = json['ItemDescription'];
itemID = json['ItemID'];
orderDate = json['OrderDate'];
patientID = json['PatientID'];
patientName = json['PatientName'];
phoneOffice1 = json['PhoneOffice1'];
prescriptionQR = json['PrescriptionQR'];
prescriptionTimes = json['PrescriptionTimes'];
productImage = json['ProductImage'];
productImageBase64 = json['ProductImageBase64'];
productImageString = json['ProductImageString'];
projectID = json['ProjectID'];
projectName = json['ProjectName'];
remarks = json['Remarks'];
route = json['Route'];
sKU = json['SKU'];
scaleOffset = json['ScaleOffset'];
startDate = json['StartDate'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['Address'] = this.address;
data['AppointmentNo'] = this.appointmentNo;
data['Clinic'] = this.clinic;
data['CompanyName'] = this.companyName;
data['Days'] = this.days;
data['DoctorName'] = this.doctorName;
data['DoseDailyQuantity'] = this.doseDailyQuantity;
data['Frequency'] = this.frequency;
data['FrequencyNumber'] = this.frequencyNumber;
data['ImageExtension'] = this.imageExtension;
data['ImageSRCUrl'] = this.imageSRCUrl;
data['ImageString'] = this.imageString;
data['ImageThumbUrl'] = this.imageThumbUrl;
data['IsCovered'] = this.isCovered;
data['ItemDescription'] = this.itemDescription;
data['ItemID'] = this.itemID;
data['OrderDate'] = this.orderDate;
data['PatientID'] = this.patientID;
data['PatientName'] = this.patientName;
data['PhoneOffice1'] = this.phoneOffice1;
data['PrescriptionQR'] = this.prescriptionQR;
data['PrescriptionTimes'] = this.prescriptionTimes;
data['ProductImage'] = this.productImage;
data['ProductImageBase64'] = this.productImageBase64;
data['ProductImageString'] = this.productImageString;
data['ProjectID'] = this.projectID;
data['ProjectName'] = this.projectName;
data['Remarks'] = this.remarks;
data['Route'] = this.route;
data['SKU'] = this.sKU;
data['ScaleOffset'] = this.scaleOffset;
data['StartDate'] = this.startDate;
return data;
}
}

@ -0,0 +1,68 @@
class RequestPrescriptionReport {
int projectID;
int appointmentNo;
int episodeID;
String setupID;
int patientTypeID;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
RequestPrescriptionReport(
{this.projectID,
this.appointmentNo,
this.episodeID,
this.setupID,
this.patientTypeID,
this.languageID,
this.stamp,
this.iPAdress,
this.versionID,
this.channel,
this.tokenID,
this.sessionID,
this.isLoginForDoctorApp,
this.patientOutSA});
RequestPrescriptionReport.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
appointmentNo = json['AppointmentNo'];
episodeID = json['EpisodeID'];
setupID = json['SetupID'];
patientTypeID = json['PatientTypeID'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['AppointmentNo'] = this.appointmentNo;
data['EpisodeID'] = this.episodeID;
data['SetupID'] = this.setupID;
data['PatientTypeID'] = this.patientTypeID;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
return data;
}
}

@ -21,24 +21,50 @@ class DoctorApp {
static const _kFontFam = 'DoctorApp'; static const _kFontFam = 'DoctorApp';
static const _kFontPkg = null; static const _kFontPkg = null;
static const IconData femaleicon = IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData femaleicon =
static const IconData male = IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData home_icon = IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData male =
static const IconData home_icon_active = IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData menu_icon = IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData home_icon =
static const IconData menu_icon_active = IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData message_icon = IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData home_icon_active =
static const IconData message_icon_active = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData scdedule_icon_active = IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData menu_icon =
static const IconData schedule_icon = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData discharge_patient = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData menu_icon_active =
static const IconData in_patient_white = IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData lab_results = IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData message_icon =
static const IconData operations = IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData out_patient = IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData message_icon_active =
static const IconData patient = IconData(0xe815, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData qr_code = IconData(0xe816, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData scdedule_icon_active =
static const IconData radiology = IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData referral = IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData schedule_icon =
static const IconData search_patient = IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData discharge_patient =
IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData in_patient_white =
IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData lab_results =
IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData operations =
IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData out_patient =
IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData patient =
IconData(0xe815, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData qr_code =
IconData(0xe816, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData radiology =
IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData referral =
IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData search_patient =
IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData reject_icon =
IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData approved_icon =
IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData pending_icon =
IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
} }

@ -1,27 +1,66 @@
import 'dart:convert'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/client/app_client.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import '../models/user_model.dart'; import '../models/user_model.dart';
const LOGIN_URL = const LOGIN_URL = 'Sentry.svc/REST/MemberLogIN_New';
'Sentry.svc/REST/MemberLogIN_New'; const INSERT_DEVICE_IMEI = 'Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI';
const INSERT_DEVICE_IMEI =
'Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI';
const SELECT_DEVICE_IMEI = const SELECT_DEVICE_IMEI =
'Sentry.svc/REST/DoctorApplication_SELECTDeviceIMEIbyIMEI'; 'Sentry.svc/REST/DoctorApplication_SELECTDeviceIMEIbyIMEI';
const SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE = const SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE =
'Sentry.svc/REST/DoctorApplication_SendActivationCodebyOTPNotificationType'; 'Sentry.svc/REST/DoctorApplication_SendActivationCodebyOTPNotificationType';
const MEMBER_CHECK_ACTIVATION_CODE_NEW ='Sentry.svc/REST/MemberCheckActivationCode_New'; const MEMBER_CHECK_ACTIVATION_CODE_NEW =
'Sentry.svc/REST/MemberCheckActivationCode_New';
const GET_DOC_PROFILES = 'Doctors.svc/REST/GetDocProfiles'; const GET_DOC_PROFILES = 'Doctors.svc/REST/GetDocProfiles';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED }
class AuthProvider with ChangeNotifier { class AuthProvider with ChangeNotifier {
Future<Map> login(UserModel userInfo) async {
const url = LOGIN_URL;
bool isLogin= false;
bool isLoading = true;
AuthProvider(){
getUserAuthentication();
}
void getUserAuthentication() async{
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
if(profile != null)
{
isLoading = false;
isLogin = true;
} else {
isLoading = false;
isLogin = false;
}
notifyListeners();
}
APP_STATUS get stutas {
if (isLoading) {
return APP_STATUS.LOADING;
} else{
if ( this.isLogin) {
return APP_STATUS.AUTHENTICATED;
} else {
return APP_STATUS.UNAUTHENTICATED;
}
}
}
Future<dynamic> login(UserModel userInfo) async {
try { try {
final response = await AppClient.post(url, dynamic localRes;
body: json.encode({
await BaseAppClient.post(LOGIN_URL,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: {
"UserID": userInfo.UserID, "UserID": userInfo.UserID,
"Password": userInfo.Password, "Password": userInfo.Password,
"ProjectID": userInfo.ProjectID, "ProjectID": userInfo.ProjectID,
@ -30,57 +69,75 @@ class AuthProvider with ChangeNotifier {
"VersionID": userInfo.VersionID, "VersionID": userInfo.VersionID,
"Channel": userInfo.Channel, "Channel": userInfo.Channel,
"SessionID": userInfo.SessionID "SessionID": userInfo.SessionID
})); });
return Future.value(json.decode(response.body));
return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
throw error; throw error;
} }
} }
Future<Map> insertDeviceImei(imei) async { Future<dynamic> insertDeviceImei(imei) async {
const url = INSERT_DEVICE_IMEI;
try { try {
final response = await AppClient.post(url, body: json.encode(imei)); dynamic localRes;
return Future.value(json.decode(response.body));
await BaseAppClient.post(INSERT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: imei);
return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
throw error; throw error;
} }
} }
Future<Map> selectDeviceImei(imei) async { Future<dynamic> selectDeviceImei(imei) async {
const url = SELECT_DEVICE_IMEI;
try { try {
final response = await AppClient.post(url, body: json.encode(imei)); dynamic localRes;
return Future.value(json.decode(response.body)); await BaseAppClient.post(SELECT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: imei);
return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
throw error; throw error;
} }
} }
Future<Map> sendActivationCodeByOtpNotificationType( Future sendActivationCodeByOtpNotificationType(
activationCodeModel) async { activationCodeModel) async {
const url = SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE;
try { try {
final response = await AppClient.post(url, body: json.encode(activationCodeModel)); var localRes;
return Future.value(json.decode(response.body)); await BaseAppClient.post(SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel);
return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
throw error; throw error;
} }
} }
Future<Map> memberCheckActivationCodeNew(activationCodeModel) async { Future<dynamic> memberCheckActivationCodeNew(activationCodeModel) async {
const url = MEMBER_CHECK_ACTIVATION_CODE_NEW;
try { try {
final response = await AppClient.post(url, body: json.encode(activationCodeModel)); dynamic localRes;
return Future.value(json.decode(response.body)); await BaseAppClient.post(MEMBER_CHECK_ACTIVATION_CODE_NEW,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel);
return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
throw error; throw error;
@ -94,15 +151,21 @@ class AuthProvider with ChangeNotifier {
*@return:Future<Map> *@return:Future<Map>
*@desc: getDocProfiles *@desc: getDocProfiles
*/ */
Future<Map> getDocProfiles(docInfo) async { Future<dynamic> getDocProfiles(docInfo) async {
const url = GET_DOC_PROFILES;
try { try {
final response = await AppClient.post(url, body: json.encode(docInfo)); dynamic localRes;
return Future.value(json.decode(response.body)); await BaseAppClient.post(GET_DOC_PROFILES,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: docInfo);
return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
throw error; throw error;
} }
} }
} }

@ -3,7 +3,6 @@ import 'package:doctor_app_flutter/models/request_doctor_reply.dart';
import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart'; import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
class DoctorReplyProvider with ChangeNotifier { class DoctorReplyProvider with ChangeNotifier {
List<ListGtMyPatientsQuestions> listDoctorWorkingHoursTable = []; List<ListGtMyPatientsQuestions> listDoctorWorkingHoursTable = [];
@ -18,19 +17,20 @@ class DoctorReplyProvider with ChangeNotifier {
getDoctorReply() async { getDoctorReply() async {
try { try {
await BaseAppClient.post('DoctorApplication.svc/REST/GtMyPatientsQuestions', await BaseAppClient.post(
'DoctorApplication.svc/REST/GtMyPatientsQuestions',
body: _requestDoctorReply.toJson(), body: _requestDoctorReply.toJson(),
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
response['List_GtMyPatientsQuestions'].forEach((v) { response['List_GtMyPatientsQuestions'].forEach((v) {
listDoctorWorkingHoursTable.add(ListGtMyPatientsQuestions.fromJson(v)); listDoctorWorkingHoursTable
.add(ListGtMyPatientsQuestions.fromJson(v));
isError = false; isError = false;
isLoading = false; isLoading = false;
}); });
}, }, onFailure: (String error, int statusCode) {
onFailure: (String error, int statusCode) {
isError = true; isError = true;
isLoading = false; isLoading = false;
this.error= error; this.error = error;
}); });
notifyListeners(); notifyListeners();

@ -1,11 +1,8 @@
import 'dart:convert'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
class HospitalProvider with ChangeNotifier { class HospitalProvider with ChangeNotifier {
Future<Map> getProjectsList() async { Future<Map> getProjectsList() async {
const url = GET_PROJECTS; const url = GET_PROJECTS;
var info = { var info = {
@ -18,12 +15,17 @@ class HospitalProvider with ChangeNotifier {
"SessionID": "i1UJwCTSqt", "SessionID": "i1UJwCTSqt",
"IsLoginForDoctorApp": true "IsLoginForDoctorApp": true
}; };
try { dynamic localRes ;
final response = await AppClient.post(url, body: json.encode(info));
return Future.value(json.decode(response.body)); await BaseAppClient.post(url,
} catch (error) { onSuccess: ( response, statusCode) async {
localRes= response;
},
onFailure: (String error, int statusCode) {
throw error; throw error;
// print('error'); },
} body: info);
return Future.value(localRes);
} }
} }

@ -25,7 +25,7 @@ class MedicineProvider with ChangeNotifier {
resetDefaultValues(); resetDefaultValues();
try { try {
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
_itemsRequestModel.phrItemName = itemName; _itemsRequestModel.pHRItemName = itemName;
final response = await AppClient.post(PHARMACY_ITEMS_URL, final response = await AppClient.post(PHARMACY_ITEMS_URL,
body: json.encode(_itemsRequestModel.toJson())); body: json.encode(_itemsRequestModel.toJson()));

@ -2,6 +2,11 @@ import 'dart:convert';
import 'package:doctor_app_flutter/client/app_client.dart'; import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/get_clinic_by_project_id_request.dart';
import 'package:doctor_app_flutter/models/patient/get_doctor_by_clinic_id_request.dart';
import 'package:doctor_app_flutter/models/patient/get_list_stp_referral_frequency_request.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders_res_model.dart'; import 'package:doctor_app_flutter/models/patient/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_result.dart'; import 'package:doctor_app_flutter/models/patient/lab_result.dart';
import 'package:doctor_app_flutter/models/patient/lab_result_req_model.dart'; import 'package:doctor_app_flutter/models/patient/lab_result_req_model.dart';
@ -9,13 +14,12 @@ import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription_report_for_in_patient.dart'; import 'package:doctor_app_flutter/models/patient/prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart'; import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology_res_model.dart'; import 'package:doctor_app_flutter/models/patient/radiology_res_model.dart';
import 'package:doctor_app_flutter/models/patient/refer_to_doctor_request.dart';
import 'package:doctor_app_flutter/models/prescription_report.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_client_with_interceptor.dart';
import '../client/app_client.dart';
import '../config/config.dart'; import '../config/config.dart';
import '../interceptor/http_interceptor.dart';
import '../models/patient/lab_orders_res_model.dart'; import '../models/patient/lab_orders_res_model.dart';
import '../models/patient/patiant_info_model.dart'; import '../models/patient/patiant_info_model.dart';
import '../models/patient/patient_model.dart'; import '../models/patient/patient_model.dart';
@ -25,6 +29,7 @@ import '../models/patient/vital_sign_res_model.dart';
import '../util/helpers.dart'; import '../util/helpers.dart';
Helpers helpers = Helpers(); Helpers helpers = Helpers();
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
class PatientsProvider with ChangeNotifier { class PatientsProvider with ChangeNotifier {
bool isLoading = false; bool isLoading = false;
@ -36,6 +41,7 @@ class PatientsProvider with ChangeNotifier {
List<PrescriptionResModel> patientPrescriptionsList = []; List<PrescriptionResModel> patientPrescriptionsList = [];
List<RadiologyResModel> patientRadiologyList = []; List<RadiologyResModel> patientRadiologyList = [];
List<PrescriptionReportForInPatient> prescriptionReportForInPatientList = []; List<PrescriptionReportForInPatient> prescriptionReportForInPatientList = [];
List<PrescriptionReport> prescriptionReport = [];
/*@author: ibrahe albitar /*@author: ibrahe albitar
*@Date:2/6/2020 *@Date:2/6/2020
@ -47,25 +53,31 @@ class PatientsProvider with ChangeNotifier {
var patientProgressNoteList = []; var patientProgressNoteList = [];
var insuranceApporvalsList = []; var insuranceApporvalsList = [];
Client client = var doctorsList = [];
HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); var clinicsList = [];
var referalFrequancyList = [];
PatiantInformtion _selectedPatient; DoctorsByClinicIdRequest _doctorsByClinicIdRequest =
DoctorsByClinicIdRequest();
STPReferralFrequencyRequest _referralFrequencyRequest =
STPReferralFrequencyRequest();
ClinicByProjectIdRequest _clinicByProjectIdRequest =
ClinicByProjectIdRequest();
ReferToDoctorRequest _referToDoctorRequest;
Future<Map> getPatientList(PatientModel patient, patientType) async { PatiantInformtion _selectedPatient;
/* const url =
BASE_URL+'DoctorApplication.svc/REST/GetMyInPatient';*/
Future<dynamic> getPatientList(PatientModel patient, patientType) async {
int val = int.parse(patientType); int val = int.parse(patientType);
//**********Modify url by amjad amireh for patiant type*********
final url =
BASE_URL + "DoctorApplication.svc/REST/" + SERVICES_PATIANT[val];
// print("a===========$url=======a");
try { try {
final response = await client.post(url, dynamic localRes;
body: json.encode({ await BaseAppClient.post('DoctorApplication.svc/REST/' + SERVICES_PATIANT[val],
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: {
"ProjectID": patient.ProjectID, "ProjectID": patient.ProjectID,
"ClinicID": patient.ClinicID, "ClinicID": patient.ClinicID,
"DoctorID": patient.DoctorID, "DoctorID": patient.DoctorID,
@ -86,13 +98,12 @@ class PatientsProvider with ChangeNotifier {
"SessionID": patient.SessionID, "SessionID": patient.SessionID,
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp, "IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"PatientOutSA": patient.PatientOutSA "PatientOutSA": patient.PatientOutSA
})); });
//**********************
//***********************
return Future.value(json.decode(response.body)); return Future.value(localRes);
} catch (err) { } catch (error) {
throw err; print(error);
throw error;
} }
} }
@ -114,21 +125,10 @@ class PatientsProvider with ChangeNotifier {
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { await BaseAppClient.post(GET_PATIENT_VITAL_SIGN,
final response = await AppClient.post(GET_PATIENT_VITAL_SIGN, onSuccess: (dynamic response, int statusCode) {
body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
patientVitalSignList = []; patientVitalSignList = [];
res['List_DoctorPatientVitalSign'].forEach((v) { response['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v)); patientVitalSignList.add(new VitalSignResModel.fromJson(v));
}); });
@ -141,21 +141,22 @@ class PatientsProvider with ChangeNotifier {
a.vitalSignDate.microsecondsSinceEpoch; a.vitalSignDate.microsecondsSinceEpoch;
}); });
patientVitalSignOrderdSubList.clear(); patientVitalSignOrderdSubList.clear();
for (int x = 0; x < 20; x++) { int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20
: patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]); .add(patientVitalSignOrderdSubListTemp[x]);
} }
} }
} else { isLoading = false;
isError = true; isError = false;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; this.error = '';
} }, onFailure: (String error, int statusCode) {
}
} else {
isLoading = false; isLoading = false;
isError = true; isError = true;
error = 'Please Check The Internet Connection'; this.error = error;
} }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -174,33 +175,20 @@ class PatientsProvider with ChangeNotifier {
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { await BaseAppClient.post(GET_PATIENT_LAB_OREDERS,
final response = await AppClient.post(GET_PATIENT_LAB_OREDERS, onSuccess: (dynamic response, int statusCode) {
body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
patientLabResultOrdersList = []; patientLabResultOrdersList = [];
res['List_GetLabOreders'].forEach((v) { response['List_GetLabOreders'].forEach((v) {
patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v)); patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v));
}); });
} else { isLoading = false;
isError = true; isError = false;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; this.error = '';
} }, onFailure: (String error, int statusCode) {
}
} else {
isLoading = false; isLoading = false;
isError = true; isError = true;
error = 'Please Check The Internet Connection'; this.error = error;
} }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -215,36 +203,21 @@ class PatientsProvider with ChangeNotifier {
*/ */
getOutPatientPrescriptions(patient) async { getOutPatientPrescriptions(patient) async {
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { await BaseAppClient.post(GET_PRESCRIPTION,
final response = onSuccess: (dynamic response, int statusCode) {
await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
patientPrescriptionsList = []; patientPrescriptionsList = [];
res['PatientPrescriptionList'].forEach((v) { response['PatientPrescriptionList'].forEach((v) {
patientPrescriptionsList patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v));
.add(new PrescriptionResModel.fromJson(v));
}); });
} else { isLoading = false;
isError = true; isError = false;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; this.error = '';
} }, onFailure: (String error, int statusCode) {
}
} else {
isLoading = false; isLoading = false;
isError = true; isError = true;
error = 'Please Check The Internet Connection'; this.error = error;
} }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -273,15 +246,36 @@ class PatientsProvider with ChangeNotifier {
isLoading = false; isLoading = false;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isError = true; isError = true;
isLoading = false;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
} }
} }
getPrescriptionReport(prescriptionReqModel) async {
prescriptionReport = [];
isLoading = true;
isError = false;
error = "";
notifyListeners();
await BaseAppClient.post('Patients.svc/REST/GetPrescriptionReport',
onSuccess: (dynamic response, int statusCode) {
response['ListPRM'].forEach((v) {
prescriptionReport.add(PrescriptionReport.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: prescriptionReqModel);
notifyListeners();
}
/*@author: Elham Rababah /*@author: Elham Rababah
*@Date:12/5/2020 *@Date:12/5/2020
*@param: patient *@param: patient
@ -307,33 +301,20 @@ class PatientsProvider with ChangeNotifier {
// notifyListeners(); // notifyListeners();
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { await BaseAppClient.post(GET_RADIOLOGY,
final response = onSuccess: (dynamic response, int statusCode) {
await AppClient.post(GET_RADIOLOGY, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
patientRadiologyList = []; patientRadiologyList = [];
res['List_GetRadOreders'].forEach((v) { response['List_GetRadOreders'].forEach((v) {
patientRadiologyList.add(new RadiologyResModel.fromJson(v)); patientRadiologyList.add(new RadiologyResModel.fromJson(v));
}); });
} else { isLoading = false;
isError = true; isError = false;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; this.error = '';
} }, onFailure: (String error, int statusCode) {
}
} else {
isLoading = false; isLoading = false;
isError = true; isError = true;
error = 'Please Check The Internet Connection'; this.error = error;
} }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -367,31 +348,17 @@ class PatientsProvider with ChangeNotifier {
getPatientInsuranceApprovals(patient) async { getPatientInsuranceApprovals(patient) async {
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { await BaseAppClient.post(PATIENT_INSURANCE_APPROVALS_URL,
final response = await AppClient.post(PATIENT_INSURANCE_APPROVALS_URL, onSuccess: (dynamic response, int statusCode) {
body: json.encode(patient)); insuranceApporvalsList = response['List_ApprovalMain_InPatient'];
final int statusCode = response.statusCode;
isLoading = false; isLoading = false;
isError = false;
if (statusCode < 200 || statusCode >= 400 || json == null) { this.error = '';
isError = true; }, onFailure: (String error, int statusCode) {
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
//patientRadiologyList = [];
insuranceApporvalsList = res['List_ApprovalMain_InPatient'];
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
}
}
} else {
isLoading = false; isLoading = false;
isError = true; isError = true;
error = 'Please Check The Internet Connection'; this.error = error;
} }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -400,36 +367,175 @@ class PatientsProvider with ChangeNotifier {
/*@author: ibrahe albitar /*@author: ibrahe albitar
*@Date:2/6/2020 *@Date:2/6/2020
*@desc: getPatientPrescriptions *@desc: getPatientProgressNote
*/ */
getPatientProgressNote(patient) async { getPatientProgressNote(patient) async {
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { await BaseAppClient.post(PATIENT_PROGRESS_NOTE_URL,
final response = await AppClient.post(PATIENT_PROGRESS_NOTE_URL, onSuccess: (dynamic response, int statusCode) {
body: json.encode(patient)); patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
final int statusCode = response.statusCode; isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
if (statusCode < 200 || statusCode >= 400 || json == null) { /*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: getDoctorsList
*/
getDoctorsList(String clinicId) async {
setBasicData();
try {
_doctorsByClinicIdRequest.clinicID = clinicId;
await BaseAppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL,
onSuccess: (dynamic response, int statusCode) {
doctorsList = response['List_Doctors_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true; isError = true;
error = 'Error While Fetching data'; this.error = error;
} else { }, body: _doctorsByClinicIdRequest.toJson());
var res = json.decode(response.body); notifyListeners();
print('$res'); } catch (err) {
if (res['MessageStatus'] == 1) { handelCatchErrorCase(err);
patientProgressNoteList = res['List_GetPregressNoteForInPatient']; }
} else { }
List getDoctorNameList() {
var doctorNamelist =
doctorsList.map((value) => value['DoctorName'].toString()).toList();
return doctorNamelist;
}
/*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: getClinicsList
*/
getClinicsList() async {
setBasicData();
try {
await BaseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL,
onSuccess: (dynamic response, int statusCode) {
clinicsList = response['List_Clinic_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true; isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; this.error = error;
}, body: _clinicByProjectIdRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
} }
} }
} else {
List getClinicNameList() {
var clinicsNameslist = clinicsList
.map((value) => value['ClinicDescription'].toString())
.toList();
return clinicsNameslist;
}
/*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: getReferralFrequancyList
*/
getReferralFrequancyList() async {
setBasicData();
try {
await BaseAppClient.post(PATIENT_GET_LIST_REFERAL_URL,
onSuccess: (dynamic response, int statusCode) {
referalFrequancyList = response['list_STPReferralFrequency'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
error = 'Please Check The Internet Connection'; this.error = error;
}, body: _referralFrequencyRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
List getReferralNamesList() {
var referralNamesList = referalFrequancyList
.map((value) => value['Description'].toString())
.toList();
return referralNamesList;
} }
/*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: referToDoctor
*/
referToDoctor(context,
{String selectedDoctorID,
String selectedClinicID,
int admissionNo,
String extension,
String priority,
String frequency,
String referringDoctorRemarks,
int patientID,
int patientTypeID,
String roomID,
int projectID}) async {
setBasicData();
try {
String token = await sharedPref.getString(TOKEN);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile =
new DoctorProfileModel.fromJson(profile);
int doctorID = doctorProfile.doctorID;
int clinicId = doctorProfile.clinicID;
_referToDoctorRequest = ReferToDoctorRequest(
projectID: projectID,
admissionNo: admissionNo,
roomID: roomID,
referralClinic: selectedClinicID.toString(),
referralDoctor: selectedDoctorID.toString(),
createdBy: doctorID,
editedBy: doctorID,
patientID: patientID,
patientTypeID: patientTypeID,
referringClinic: clinicId,
referringDoctor: doctorID,
referringDoctorRemarks: referringDoctorRemarks,
priority: priority,
frequency: frequency,
extension: extension,
tokenID: token);
await BaseAppClient.post(PATIENT_REFER_TO_DOCTOR_URL,
onSuccess: (dynamic response, int statusCode) {
// print('Done : \n $res');
Navigator.pop(context);
},
onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
},
body: _referToDoctorRequest.toJson());
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
} }

@ -0,0 +1,38 @@
import 'package:doctor_app_flutter/providers/auth_provider.dart';
import 'package:doctor_app_flutter/screens/auth/login_screen.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'config/config.dart';
import 'landing_page.dart';
class RootPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
AuthProvider authProvider = Provider.of(context);
Widget buildRoot() {
switch (authProvider.stutas) {
case APP_STATUS.LOADING:
return Scaffold(
body: Center(
child: DrAppCircularProgressIndeicator(),
),
);
break;
case APP_STATUS.UNAUTHENTICATED:
return Loginsreen();
break;
case APP_STATUS.AUTHENTICATED:
return LandingPage();
break;
}
}
return AnimatedSwitcher(
duration: Duration(microseconds: 350),
child: buildRoot(),
);
}
}

@ -1,4 +1,14 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/root_page.dart';
import 'package:doctor_app_flutter/screens/patients/profile/insurance_approvals_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/patient_orders_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/progress_note_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/refer_patient_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/in_patient_prescription_details_screen.dart';
import './screens/QR_reader_screen.dart'; import './screens/QR_reader_screen.dart';
import './screens/auth/change_password_screen.dart'; import './screens/auth/change_password_screen.dart';
import './screens/auth/login_screen.dart'; import './screens/auth/login_screen.dart';
@ -29,7 +39,8 @@ import './screens/settings/settings_screen.dart';
import 'landing_page.dart'; import 'landing_page.dart';
import 'screens/doctor/doctor_reply_screen.dart'; import 'screens/doctor/doctor_reply_screen.dart';
const String INIT_ROUTE = LOGIN; const String INIT_ROUTE = ROOT;
const String ROOT = 'root';
const String HOME = '/'; const String HOME = '/';
const String LOGIN = 'login'; const String LOGIN = 'login';
const String PROFILE = 'profile'; const String PROFILE = 'profile';
@ -54,12 +65,15 @@ const String LAB_ORDERS = 'patients/lab_orders';
const String PRESCRIPTIONS = 'patients/prescription'; const String PRESCRIPTIONS = 'patients/prescription';
const String RADIOLOGY = 'patients/radiology'; const String RADIOLOGY = 'patients/radiology';
const String PROGRESS_NOTE = 'patients/progress-note'; const String PROGRESS_NOTE = 'patients/progress-note';
const String REFER_PATIENT = 'patients/refer-patient';
const String PATIENT_ORDERS = 'patients/patient_orders'; const String PATIENT_ORDERS = 'patients/patient_orders';
const String PATIENT_INSURANCE_APPROVALS = 'patients/patient_insurance_approvals'; const String PATIENT_INSURANCE_APPROVALS = 'patients/patient_insurance_approvals';
const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details'; const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details';
const String BODY_MEASUREMENTS = 'patients/body-measurements'; const String BODY_MEASUREMENTS = 'patients/body-measurements';
const String IN_PATIENT_PRESCRIPTIONS_DETAILS = 'patients/prescription-details';
var routes = { var routes = {
ROOT: (_) => RootPage(),
HOME: (_) => LandingPage(), HOME: (_) => LandingPage(),
LOGIN: (_) => Loginsreen(), LOGIN: (_) => Loginsreen(),
PROFILE: (_) => ProfileScreen(), PROFILE: (_) => ProfileScreen(),
@ -86,8 +100,10 @@ var routes = {
PRESCRIPTIONS: (_) => PrescriptionScreen(), PRESCRIPTIONS: (_) => PrescriptionScreen(),
RADIOLOGY: (_) => RadiologyScreen(), RADIOLOGY: (_) => RadiologyScreen(),
PROGRESS_NOTE: (_) => ProgressNoteScreen(), PROGRESS_NOTE: (_) => ProgressNoteScreen(),
REFER_PATIENT: (_)=> ReferPatientScreen(),
PATIENT_ORDERS: (_) => PatientsOrdersScreen(), PATIENT_ORDERS: (_) => PatientsOrdersScreen(),
PATIENT_INSURANCE_APPROVALS: (_) => InsuranceApprovalsScreen(), PATIENT_INSURANCE_APPROVALS: (_) => InsuranceApprovalsScreen(),
VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(), VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(),
BODY_MEASUREMENTS: (_) => VitalSignItemDetailsScreen() BODY_MEASUREMENTS: (_) => VitalSignItemDetailsScreen(),
IN_PATIENT_PRESCRIPTIONS_DETAILS:(_)=> InpatientPrescriptionDetailsScreen()
}; };

@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart'; import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/widgets/shared/app_button.dart'; import 'package:doctor_app_flutter/widgets/shared/app_button.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@ -23,7 +24,7 @@ class QrReaderScreen extends StatefulWidget {
} }
class _QrReaderScreenState extends State<QrReaderScreen> { class _QrReaderScreenState extends State<QrReaderScreen> {
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
bool isLoading = false; bool isLoading = false;
bool isError = false; bool isError = false;
@ -159,9 +160,9 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
} else { } else {
setState(() { setState(() {
isError = true; isError = true;
error = 'No patient';
isLoading = false; isLoading = false;
}); });
DrAppToastMsg.showErrorToast('No patient');
} }
break; break;
case "1": case "1":
@ -176,21 +177,28 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
}); });
} else { } else {
setState(() { setState(() {
error = 'No patient';
isError = true; isError = true;
isLoading = false; isLoading = false;
}); });
DrAppToastMsg.showErrorToast('No patient');
break; break;
} }
} }
} else { } else {
setState(() { setState(() {
error = response['ErrorEndUserMessage'] ?? response['ErrorMessage'] ;
isLoading = false; isLoading = false;
isError = true; isError = true;
}); });
DrAppToastMsg.showErrorToast(response['ErrorEndUserMessage'] ?? response['ErrorMessage']);
} }
}).catchError((error){
setState(() {
isLoading = false;
});
helpers.showErrorToast(error);
//DrAppToastMsg.showErrorToast(error);
}); });
} }
// } // }
} }

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
@ -11,8 +12,8 @@ import '../../widgets/auth/login_form.dart';
import '../../widgets/shared/app_scaffold_widget.dart'; import '../../widgets/shared/app_scaffold_widget.dart';
import '../../widgets/shared/dr_app_circular_progress_Indeicator.dart'; import '../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
class Loginsreen extends StatefulWidget { class Loginsreen extends StatefulWidget {
@override @override
_LoginsreenState createState() => _LoginsreenState(); _LoginsreenState createState() => _LoginsreenState();
@ -55,6 +56,7 @@ class _LoginsreenState extends State<Loginsreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
getSharedPref(); getSharedPref();
return AppScaffold( return AppScaffold(
isLoading: _isLoading, isLoading: _isLoading,

@ -1,5 +1,3 @@
import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../lookups/auth_lookup.dart'; import '../../lookups/auth_lookup.dart';

@ -37,6 +37,11 @@ class _DashboardScreenState extends State<DashboardScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
projectsProvider = Provider.of(context); projectsProvider = Provider.of(context);
return SafeArea( return SafeArea(
bottom: true, bottom: true,
@ -166,36 +171,27 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
widget.iconURL + 'lab_results.svg', DoctorApp.lab_results,
"08", "08",
TranslationBase.of(context).labResult, TranslationBase.of(context).labResult,
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
// valueFontColor: Colors.white,
// titleFontColor: Colors.white,
// iconColor: Colors.white,
), ),
), ),
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
widget.iconURL + 'radiology.svg', DoctorApp.radiology,
"10", "10",
TranslationBase.of(context).radiology, TranslationBase.of(context).radiology,
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
// valueFontColor: Colors.white,
// titleFontColor: Colors.white,
// iconColor: Colors.white,
)), )),
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
widget.iconURL + 'referral.svg', DoctorApp.referral,
"05", "05",
TranslationBase.of(context).referral, TranslationBase.of(context).referral,
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
// valueFontColor: Colors.white,
// titleFontColor: Colors.white,
// iconColor: Colors.white,
)), )),
], ],
), ),
@ -208,9 +204,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
widget.iconURL + 'in_patient_white.svg', DoctorApp.in_patient_white, "23", "In-Patient",
"23",
"In-Patient",
showBorder: true, showBorder: true,
backgroundColor: Colors.red[900], backgroundColor: Colors.red[900],
iconColor: Colors.white), iconColor: Colors.white),
@ -218,7 +212,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
widget.iconURL + 'operations.svg', //widget.iconURL + 'operations.svg',
DoctorApp.operations,
"23", "23",
TranslationBase.of(context).operations, TranslationBase.of(context).operations,
showBorder: true, showBorder: true,
@ -246,7 +241,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 2, flex: 2,
child: InkWell( child: InkWell(
child: DashboardItemIconText( child: DashboardItemIconText(
widget.iconURL + 'search_patient.svg', DoctorApp.search_patient,
"", "",
TranslationBase.of(context).searchPatient, TranslationBase.of(context).searchPatient,
showBorder: true, showBorder: true,
@ -276,7 +271,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
widget.iconURL + 'message_icon.svg', DoctorApp.message_icon,
"", "",
TranslationBase.of(context).doctorReply, TranslationBase.of(context).doctorReply,
showBorder: true, showBorder: true,
@ -300,9 +295,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 1, flex: 1,
child: InkWell( child: InkWell(
child: DashboardItemIconText( child: DashboardItemIconText(
widget.iconURL + 'search_patient.svg', DoctorApp.search_patient,
"", "",
"Search Medicine", TranslationBase.of(context).searchMedicine,
showBorder: true, showBorder: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
valueFontColor: Colors.black, valueFontColor: Colors.black,
@ -338,9 +333,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
widget.iconURL + 'referral.svg', DoctorApp.referral,
"", "",
"My Referral Patient", TranslationBase.of(context).myReferralPatient,
showBorder: true, showBorder: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
valueFontColor: Colors.black, valueFontColor: Colors.black,
@ -373,9 +368,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
widget.iconURL + 'referral.svg', DoctorApp.referral,
"", "",
"My Referred Patient", TranslationBase.of(context).myReferredPatient,
showBorder: true, showBorder: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
valueFontColor: Colors.black, valueFontColor: Colors.black,
@ -392,7 +387,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Navigator.of(context).pushNamed(QR_READER); Navigator.of(context).pushNamed(QR_READER);
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
widget.iconURL + 'qr-code.svg', DoctorApp.qr_code,
"", "",
"QR Reader", "QR Reader",
showBorder: true, showBorder: true,
@ -408,17 +403,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
)), )),
], ],
), ),
//)
// ,
//constraints: new BoxConstraints(),
), ),
), ),
), ),
); );
// Container(
// );
} }
} }

@ -6,8 +6,6 @@ import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indei
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../config/size_config.dart';
import '../../widgets/shared/app_scaffold_widget.dart';
class MyScheduleScreen extends StatelessWidget { class MyScheduleScreen extends StatelessWidget {
ScheduleProvider scheduleProvider; ScheduleProvider scheduleProvider;

@ -11,7 +11,6 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../util/extenstions.dart'; import '../../util/extenstions.dart';
@ -60,11 +59,9 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
hintText: 'Search Medicine Name Here..', hintText: 'Search Medicine Name Here..',
controller: myController, controller: myController,
onSaved: (value) {}, onSaved: (value) {},
// validator: (value) {
// return TextValidator().validateName(value);
// },
inputFormatter: ONLY_LETTERS), inputFormatter: ONLY_LETTERS),
), ),
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 1, bottom: SizeConfig.heightMultiplier * 1,
@ -130,7 +127,7 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
ChangeNotifierProvider( ChangeNotifierProvider(
create: (_) => MedicineProvider(), create: (_) => MedicineProvider(),
child: PharmaciesListScreen( child: PharmaciesListScreen(
itemID: data[index]["ItemID"]), itemID: data[index]["ItemID"], url: data[index]["ProductImageBase64"]),
), ),
), ),
); );

@ -1,11 +1,10 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'dart:convert';
import 'dart:typed_data';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/widgets/medicine/medicine_item_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
@ -20,8 +19,11 @@ DrAppSharedPreferances sharedPref = DrAppSharedPreferances();
class PharmaciesListScreen extends StatefulWidget { class PharmaciesListScreen extends StatefulWidget {
final int itemID; final int itemID;
final String url;
// In the constructor, require a item id. // In the constructor, require a item id.
PharmaciesListScreen({Key key, @required this.itemID}) : super(key: key); PharmaciesListScreen({Key key, @required this.itemID, this.url})
: super(key: key);
@override @override
_PharmaciesListState createState() => _PharmaciesListState(); _PharmaciesListState createState() => _PharmaciesListState();
@ -61,13 +63,37 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
TextStyle(color: Theme.of(context).errorColor), TextStyle(color: Theme.of(context).errorColor),
), ),
) )
: Column( : StreamBuilder<Object>(
stream: null,
builder: (context, snapshot) {
return Row(
children: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius:
BorderRadius.all(Radius.circular(7)),
child: Image.memory(
dataFromBase64String(widget.url),
height: SizeConfig.imageSizeMultiplier * 21,
width: SizeConfig.imageSizeMultiplier * 20,
fit: BoxFit.cover,
),
),
),
Expanded(
flex: 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment:
CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
AppText( AppText(
"Description", "Description",
margin: 10, marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 2,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
AppText( AppText(
@ -79,7 +105,10 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
), ),
AppText( AppText(
"Price", "Price",
margin: 10, marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 2,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
AppText( AppText(
@ -90,15 +119,21 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
marginBottom: 10, marginBottom: 10,
), ),
], ],
)), ),
)
],
);
})),
Container( Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), margin: EdgeInsets.only(top:SizeConfig.widthMultiplier * 2,
bottom: SizeConfig.widthMultiplier * 2,
right: SizeConfig.widthMultiplier * 4,
left: SizeConfig.widthMultiplier * 4,),
child: Align( child: Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: AppText( child: AppText(
"You can Find it in", "You can Find it in",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 3,
))), ))),
Expanded( Expanded(
child: Container( child: Container(
@ -114,7 +149,8 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
Expanded( Expanded(
flex: 1, flex: 1,
child: ClipRRect( child: ClipRRect(
borderRadius:BorderRadius.all(Radius.circular(7)), borderRadius:
BorderRadius.all(Radius.circular(7)),
child: Image.network( child: Image.network(
_data[index]["ProjectImageURL"], _data[index]["ProjectImageURL"],
height: SizeConfig.imageSizeMultiplier * 15, height: SizeConfig.imageSizeMultiplier * 15,
@ -139,24 +175,35 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.all(5), padding: EdgeInsets.all(5),
child: InkWell(child: Icon(Icons.call, color: Colors.red,),onTap: ()=>launch( child: InkWell(
"tel://" + _data[index]["PhoneNumber"]),), child: Icon(
Icons.call,
color: Colors.red,
),
onTap: () => launch(
"tel://" + _data[index]["PhoneNumber"]),
), ),
Padding( ),
Padding(
padding: EdgeInsets.all(5), padding: EdgeInsets.all(5),
child: InkWell(child: Icon(Icons.pin_drop, color: Colors.red,),onTap: () { child: InkWell(
child: Icon(
Icons.pin_drop,
color: Colors.red,
),
onTap: () {
MapsLauncher.launchCoordinates( MapsLauncher.launchCoordinates(
double.parse(_data[index]["Latitude"]), double.parse(
double.parse(_data[index]["Longitude"]), _data[index]["Latitude"]),
double.parse(
_data[index]["Longitude"]),
_data[index]["LocationDescription"]); _data[index]["LocationDescription"]);
},), },
),
), ),
], ],
), ),
), ),
], ],
), ),
); );
@ -170,9 +217,20 @@ Padding(
_medicineProvider.getPharmaciesList(widget.itemID).then((result) { _medicineProvider.getPharmaciesList(widget.itemID).then((result) {
this.setState(() { this.setState(() {
_data = _medicineProvider.pharmaciesList; _data = _medicineProvider.pharmaciesList;
//if(_data == null || _data.length == 0)
}); });
}); });
return true; return true;
} }
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
}
} }

@ -0,0 +1,67 @@
import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/request_prescription_report.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/out_patient_prescription_details_item.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class OutPatientPrescriptionDetailsScreen extends StatefulWidget {
final PrescriptionResModel prescriptionResModel;
OutPatientPrescriptionDetailsScreen({Key key, this.prescriptionResModel});
@override
_OutPatientPrescriptionDetailsScreenState createState() =>
_OutPatientPrescriptionDetailsScreenState();
}
class _OutPatientPrescriptionDetailsScreenState
extends State<OutPatientPrescriptionDetailsScreen> {
bool _isInit = true;
PatientsProvider patientsProvider;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProvider = Provider.of<PatientsProvider>(context);
RequestPrescriptionReport prescriptionReqModel =
RequestPrescriptionReport(
appointmentNo: widget.prescriptionResModel.appointmentNo,
episodeID: widget.prescriptionResModel.episodeID,
setupID: widget.prescriptionResModel.setupID,
patientTypeID: widget.prescriptionResModel.patientID);
patientsProvider.getPrescriptionReport(prescriptionReqModel.toJson());
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: 'Prescription Details',
body: patientsProvider.isLoading
? DrAppCircularProgressIndeicator()
: patientsProvider.isError
? DrAppEmbeddedError(error: patientsProvider.error)
: CardWithBgWidgetNew(
widget: ListView.builder(
itemCount: patientsProvider.prescriptionReport.length,
itemBuilder: (BuildContext context, int index) {
return OutPatientPrescriptionDetailsItem(
prescriptionReport:
patientsProvider.prescriptionReport[index],
);
}),
),
);
}
}

@ -18,6 +18,7 @@ import '../../lookups/patient_lookup.dart';
import '../../widgets/patients/dynamic_elements.dart'; import '../../widgets/patients/dynamic_elements.dart';
import '../../config/config.dart'; import '../../config/config.dart';
import '../../models/doctor_profile_model.dart'; import '../../models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
Helpers helpers = Helpers(); Helpers helpers = Helpers();
@ -112,7 +113,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
appBarTitle: "SEARCH FOR PATIENT", appBarTitle: TranslationBase.of(context).searchPatient,
body: ListView( body: ListView(
children: <Widget>[ children: <Widget>[
RoundedContainer( RoundedContainer(
@ -209,7 +210,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
height: 10, height: 10,
), ),
AppTextFormField( AppTextFormField(
hintText: 'First Name', hintText: TranslationBase.of(context).firstName,
onSaved: (value) { onSaved: (value) {
value == null value == null
? _patientSearchFormValues.setFirstName = ? _patientSearchFormValues.setFirstName =
@ -229,7 +230,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
height: 10, height: 10,
), ),
AppTextFormField( AppTextFormField(
hintText: 'Middle Name', hintText: TranslationBase.of(context).middleName,
onSaved: (value) { onSaved: (value) {
value == null value == null
? _patientSearchFormValues.setMiddleName = ? _patientSearchFormValues.setMiddleName =
@ -248,7 +249,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
height: 10, height: 10,
), ),
AppTextFormField( AppTextFormField(
hintText: 'Last Name', hintText: TranslationBase.of(context).lastName,
onSaved: (value) { onSaved: (value) {
value == null value == null
? _patientSearchFormValues.setLastName = "0" ? _patientSearchFormValues.setLastName = "0"
@ -264,7 +265,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
AppTextFormField( AppTextFormField(
textInputType: TextInputType.number, textInputType: TextInputType.number,
hintText: 'Phone Number', hintText: TranslationBase.of(context).phoneNumber,
// validator: (value) { // validator: (value) {
// return TextValidator().validateMobile(value); // return TextValidator().validateMobile(value);
// }, // },
@ -287,7 +288,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
AppTextFormField( AppTextFormField(
textInputType: TextInputType.number, textInputType: TextInputType.number,
hintText: 'Patient ID', hintText: TranslationBase.of(context).patientID,
// //
inputFormatter: ONLY_NUMBERS, inputFormatter: ONLY_NUMBERS,
onSaved: (value) { onSaved: (value) {
@ -306,7 +307,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
AppTextFormField( AppTextFormField(
textInputType: TextInputType.number, textInputType: TextInputType.number,
hintText: 'Patient File', hintText: TranslationBase.of(context).patientFile,
// validator: (value) { // validator: (value) {
// return TextValidator().validateIdNumber(value); // return TextValidator().validateIdNumber(value);
// }, // },
@ -400,7 +401,9 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
value: true, value: true,
activeColor: Color(0xffFFDDD9), activeColor: Color(0xffFFDDD9),
onChanged: (bool newValue) {}), onChanged: (bool newValue) {}),
AppText('Only Arrived Patient', AppText(
TranslationBase.of(context)
.onlyArrivedPatient,
fontSize: SizeConfig.textMultiplier * 2), fontSize: SizeConfig.textMultiplier * 2),
])), ])),
SizedBox( SizedBox(
@ -419,7 +422,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: "Search", title: TranslationBase.of(context).search,
color: Color(0xff58434F), color: Color(0xff58434F),
onPressed: () { onPressed: () {
_validateInputs(); _validateInputs();

@ -52,7 +52,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
final String assetName = 'assets/image.svg'; final String assetName = 'assets/image.svg';
// List<String> _locations = ['Today', 'Old Date', 'YESTERDAY']; // List<String> _locations = ['Today', 'Old Date', 'YESTERDAY'];
List<String> _locations = ['Today', 'Tomorrow', 'Next Week']; List<String> _locations = ['All','Today', 'Tomorrow', 'Next Week'];
int _activeLocation = 0; int _activeLocation = 0;
bool _isInit = true; bool _isInit = true;
@ -102,8 +102,10 @@ class _PatientsScreenState extends State<PatientsScreen> {
} }
}); });
}).catchError((error) { }).catchError((error) {
print(error);
setState(() { setState(() {
_isError = true; _isError = true;
_isLoading = false;
this.error = helpers.generateContactAdminMsg(error); this.error = helpers.generateContactAdminMsg(error);
}); });
}); });
@ -277,10 +279,10 @@ class _PatientsScreenState extends State<PatientsScreen> {
if ((currentTime.day - checkedTime.day) <= -2) { if ((currentTime.day - checkedTime.day) <= -2) {
return "Next Week"; return "Next Week";
} else { } else {
return "Old Date"; return "All";
} }
} }
return "Old Date"; return "All";
} }
/* /*

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.dart'; import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.dart';
import 'package:doctor_app_flutter/presentation/doctor_app_icons.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -115,19 +116,21 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
children: <Widget>[ children: <Widget>[
ExpansionTile( ExpansionTile(
title: Row( title: Row(
children: <Widget>[
Column(
children: <Widget>[ children: <Widget>[
Icon( Icon(
approvalsList[index][ approvalsList[index][
"ApprovalStatusDescption"] "ApprovalStatusDescption"]
.toString() .toString()
.contains("Approved") .contains("Approved")
? Icons.check_circle_outline ? DoctorApp.approved_icon
: approvalsList[index][ : approvalsList[index][
"ApprovalStatusDescption"] "ApprovalStatusDescption"]
.toString() .toString()
.contains("Cancelled") .contains("Cancelled")
? Icons.highlight_off ? DoctorApp.reject_icon
: Icons.history, : DoctorApp.pending_icon,
color: approvalsList[index][ color: approvalsList[index][
"ApprovalStatusDescption"] "ApprovalStatusDescption"]
.toString() .toString()
@ -140,6 +143,21 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
? Colors.red ? Colors.red
: Colors.yellow, : Colors.yellow,
), ),
AppText(approvalsList[index]["ApprovalStatusDescption"],
fontSize: SizeConfig.textMultiplier * 1.5,
color: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Approved")
? Colors.green
: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? Colors.red
: Colors.yellow,)
],
),
Expanded( Expanded(
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment:
@ -186,15 +204,8 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
backgroundColor: backgroundColor:
Color(PRIMARY_COLOR), Color(PRIMARY_COLOR),
child: Column( child: Column(
children: <Widget>[ crossAxisAlignment: CrossAxisAlignment.start,
Row(
children: <Widget>[ children: <Widget>[
AppText(
"Approval No:",
color: Colors.white,
fontSize: 16,
margin: 10,
),
AppText( AppText(
approvalsList[index] approvalsList[index]
["ApprovalNo"] ["ApprovalNo"]
@ -203,9 +214,20 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
fontSize: 19, fontSize: 19,
fontWeight: fontWeight:
FontWeight.bold, FontWeight.bold,
margin: 5, marginTop: 10,
marginLeft: 10,
marginRight: 10,
marginBottom: 2,
), ),
],
AppText(
"Approval No:",
color: Colors.white,
fontSize: 16,
marginTop: 2,
marginLeft: 10,
marginBottom: 15,
marginRight: 10,
), ),
Row( Row(
children: <Widget>[ children: <Widget>[

@ -0,0 +1,192 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class InpatientPrescriptionDetailsScreen extends StatefulWidget {
@override
_InpatientPrescriptionDetailsScreenState createState() =>
_InpatientPrescriptionDetailsScreenState();
}
class _InpatientPrescriptionDetailsScreenState
extends State<InpatientPrescriptionDetailsScreen> {
bool _showDetails = false;
String error;
TextEditingController answerController;
bool _isInit = true;
PrescriptionReportForInPatient prescription;
@override
void initState() {
super.initState();
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
prescription = routeArgs['prescription'];
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: 'Prescription info',
body: CardWithBgWidgetNew(
widget: Container(
child: ListView(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
AppText(
prescription.itemDescription,
fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
InkWell(
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Icon(_showDetails
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down)),
],
),
!_showDetails
? Container()
: AnimatedContainer(
duration: Duration(milliseconds: 200),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 5,
),
Divider(
color: Color(0xFF000000),
height: 0.5,
),
Table(
border: TableBorder.symmetric(
inside: BorderSide(width: 0.5),
),
children: [
buildTableRow(
des: '${prescription.direction}',
key: 'Direction'),
buildTableRow(
des: '${prescription.refillID}',
key: 'Refill'),
buildTableRow(
des: '${prescription.dose}', key: 'Dose'),
buildTableRow(
des: '${prescription.unitofMeasurement}',
key: 'UOM'),
buildTableRow(
des:
'${Helpers.getDate(prescription.startDatetime)}',
key: 'Start Date'),
buildTableRow(
des:
'${Helpers.getDate(prescription.stopDatetime)}',
key: 'Stop Date'),
buildTableRow(
des: '${prescription.noOfDoses}',
key: 'No of Doses'),
buildTableRow(
des: '${prescription.route}', key: 'Route'),
buildTableRow(
des: '${prescription.comments}',
key: 'Comments'),
buildTableRow(
des: '${prescription.pharmacyRemarks}',
key: 'Pharmacy Remarks'),
buildTableRow(
des:
'${Helpers.getDate(prescription.prescriptionDatetime)}',
key: 'Prescription Date'),
buildTableRow(
des: '${prescription.refillID}',
key: 'Status'),
buildTableRow(
des: '${prescription.refillID}',
key: 'Created By'),
buildTableRow(
des: '${prescription.refillID}',
key: 'Processed By'),
buildTableRow(
des: '${prescription.refillID}',
key: 'Authorized By'),
],
),
Divider(
color: Color(0xFF000000),
height: 0.5,
),
SizedBox(
height: 5,
),
],
),
)
],
),
),
),
);
}
TableRow buildTableRow({des, key}) {
print('$key: $des');
return TableRow(children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Row(
children: <Widget>[
Expanded(
child: Container(
child: AppText(
key,
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
textAlign: TextAlign.start,
),
),
),
Expanded(
child: Container(
margin:
EdgeInsets.only(left: 4, top: 2.5, right: 2.5, bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
AppText(
'${des}',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
textAlign: TextAlign.center,
)
],
),
),
),
],
),
),
]);
}
}

@ -0,0 +1,138 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/prescription_report.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class OutPatientPrescriptionDetailsItem extends StatefulWidget {
final PrescriptionReport prescriptionReport;
OutPatientPrescriptionDetailsItem({Key key, this.prescriptionReport});
@override
_OutPatientPrescriptionDetailsItemState createState() =>
_OutPatientPrescriptionDetailsItemState();
}
class _OutPatientPrescriptionDetailsItemState
extends State<OutPatientPrescriptionDetailsItem> {
bool _showDetails = false;
@override
Widget build(BuildContext context) {
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
Expanded(
flex: 5,
child: AppText(
'${widget.prescriptionReport.itemDescription} ',
fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
),
Expanded(
flex: 1,
child: InkWell(
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Icon(_showDetails
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down)),
),
],
),
!_showDetails
? Container()
: AnimatedContainer(
duration: Duration(milliseconds: 200),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 5,
),
Divider(
color: Color(0xFF000000),
height: 0.5,
),
Table(
border: TableBorder.symmetric(
inside: BorderSide(width: 0.5),
),
children: [
buildTableRow(
key: 'Route',
des: widget.prescriptionReport.route),
buildTableRow(
key: 'Frequency Timing',
des: widget.prescriptionReport.frequency),
buildTableRow(key: 'Insurance Covered', des: ''),
buildTableRow(
key: 'Duration Days',
des: widget.prescriptionReport.days),
buildTableRow(
key: 'IDoctor Remarks',
des: widget.prescriptionReport.remarks),
],
),
Divider(
color: Color(0xFF000000),
height: 0.5,
),
],
),
)
],
),
);
}
TableRow buildTableRow({des, key}) {
print('$key: $des');
return TableRow(children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Row(
children: <Widget>[
Expanded(
child: Container(
child: AppText(
key,
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
textAlign: TextAlign.start,
),
),
),
Expanded(
child: Container(
margin:
EdgeInsets.only(left: 4, top: 2.5, right: 2.5, bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
AppText(
'${des}',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
textAlign: TextAlign.center,
)
],
),
),
),
],
),
),
]);
}
}

@ -1,5 +1,7 @@
import 'package:doctor_app_flutter/models/patient/reauest_prescription_report_for_in_patient.dart'; import 'package:doctor_app_flutter/models/patient/reauest_prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/prescription_in_patinets_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/prescription_out_patinets_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -33,7 +35,8 @@ class PrescriptionScreen extends StatefulWidget {
class _PrescriptionScreenState extends State<PrescriptionScreen> { class _PrescriptionScreenState extends State<PrescriptionScreen> {
PatientsProvider patientsProv; PatientsProvider patientsProv;
var _isInit = true; bool _isInit = true;
String type = '2';
/* /*
*@author: Elham Rababah *@author: Elham Rababah
@ -46,7 +49,7 @@ class _PrescriptionScreenState extends State<PrescriptionScreen> {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
String type = await sharedPref.getString(SLECTED_PATIENT_TYPE); type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
if (type == '1') { if (type == '1') {
RequestPrescriptionReportForInPatient prescriptionReqModel = RequestPrescriptionReportForInPatient prescriptionReqModel =
@ -85,74 +88,14 @@ class _PrescriptionScreenState extends State<PrescriptionScreen> {
? DrAppCircularProgressIndeicator() ? DrAppCircularProgressIndeicator()
: patientsProv.isError : patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error) ? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientPrescriptionsList.length == 0 : type == '1'
? DrAppEmbeddedError( ? PrescriptionInPatientWidget(
error: 'You don\'t have any Prescriptions') prescriptionReportForInPatientList:
: Container( patientsProv.prescriptionReportForInPatientList,
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount:
patientsProv.patientPrescriptionsList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: CardWithBgWidgetNew(
widget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
url: patientsProv
.patientPrescriptionsList[index]
.doctorImageURL,
name: patientsProv
.patientPrescriptionsList[index]
.doctorName,
radius: 10,
width: 70,
),
Expanded(
child: Container(
margin: EdgeInsets.only(
left: 15, right: 15),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientPrescriptionsList[index].name}',
fontSize: 2.5 *
SizeConfig.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
'${patientsProv.patientPrescriptionsList[index].clinicDescription}',
fontSize: 2.5 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor),
SizedBox(
height: 8,
),
],
),
),
) )
], : PrescriptionOutPatientWidget(
), patientPrescriptionsList:
], patientsProv.patientPrescriptionsList,
),
),
onTap: () {},
);
}),
), ),
); );
} }

@ -20,7 +20,7 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/* /*
*@author: ibrahim albitar *@author: ibrahim albitar
*@Date:15/5/2020 *@Date:15/5/2020
*@param: *@param: '
*@return: *@return:
*@desc: *@desc:
*/ */
@ -182,7 +182,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
if (strExist) { if (strExist) {
filteredNotesList = null; filteredNotesList = null;
filteredNotesList = notesList filteredNotesList = patientsProv.patientProgressNoteList
.where((note) => .where((note) =>
note["DoctorName"].toString().contains(str.toUpperCase())) note["DoctorName"].toString().contains(str.toUpperCase()))
.toList(); .toList();

@ -132,10 +132,6 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
url: patientsProv url: patientsProv
.patientRadiologyList[index] .patientRadiologyList[index]
.doctorImageURL, .doctorImageURL,
name: patientsProv
.patientLabResultOrdersList[
index]
.doctorName,
), ),
Expanded( Expanded(
child: Padding( child: Padding(

@ -0,0 +1,516 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../../config/size_config.dart';
import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../util/extenstions.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/*
*@author: ibrahim albitar
*@Date:4/6/2020
*@param:
*@return:
*@desc:
*/
class ReferPatientScreen extends StatefulWidget {
@override
_ReferPatientState createState() => _ReferPatientState();
}
class _ReferPatientState extends State<ReferPatientScreen> {
PatientsProvider patientsProv;
var doctorsList;
final _remarksController = TextEditingController();
final _extController = TextEditingController();
var _isInit = true;
bool isValid;
var clinicId;
var doctorId;
var freqId;
String _selectedClinic;
String _selectedDoctor;
String _selectedReferralFrequancy;
List<String> _priorities = ['Very Urgent', 'Urgent', 'Routine'];
int _activePriority = 2;
FocusNode myFocusNode;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
myFocusNode = FocusNode();
doctorsList = null;
patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getClinicsList();
patientsProv.getReferralFrequancyList();
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "Refer Patient",
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.clinicsList == null
? DrAppEmbeddedError(error: 'Something Wrong!')
: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
"Clinic",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer(
margin: 10,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedClinic,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
.getClinicNameList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedDoctor = null;
_selectedClinic = newValue;
var clinicInfo = patientsProv
.clinicsList
.where((i) =>
i['ClinicDescription']
.toString()
.contains(
_selectedClinic))
.toList();
clinicId = clinicInfo[0]['ClinicID']
.toString();
patientsProv.getDoctorsList(clinicId);
})
},
items: patientsProv
.getClinicNameList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
),
),
],
),
),
),
//--------------------------------------------------------------------//
AppText(
"Doctor",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer(
margin: 10,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedDoctor,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
.getDoctorNameList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedDoctor = newValue;
doctorsList =
patientsProv.doctorsList;
var doctorInfo = doctorsList
.where((i) => i['DoctorName']
.toString()
.contains(_selectedDoctor))
.toList();
doctorId = doctorInfo[0]['DoctorID']
.toString();
})
},
items: patientsProv
.getDoctorNameList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
),
),
],
),
),
), //-----------------------------///
AppText(
"Ext#",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: AppTextFormField(
hintText: "Ext#",
controller: _extController,
inputFormatter: ONLY_NUMBERS,
textInputType: TextInputType.number,
onChanged: (value) => {},
),
),
AppText(
"Priority",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
priorityBar(context),
AppText(
"Replay Before: " + getPriority(),
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
AppText(
"Referral Frequency",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer(
margin: 10,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedReferralFrequancy,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
.getReferralNamesList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedReferralFrequancy = newValue;
var freqInfo = patientsProv
.referalFrequancyList
.singleWhere((i) => i[
'Description']
.toString()
.contains(
_selectedReferralFrequancy));
freqId = freqInfo['ParameterCode']
.toString();
myFocusNode.requestFocus();
})
},
items: patientsProv
.getReferralNamesList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
),
),
],
),
),
),
AppText(
"Clinical Details and Remarks",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: AppTextFormField(
hintText: "Remarks",
focusNode: myFocusNode,
controller: _remarksController,
inputFormatter: ONLY_LETTERS,
textInputType: TextInputType.text,
onChanged: (value) => {},
),
),
Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
AppText(
"Please fill all fields..!",
color: Colors.red,
fontWeight: FontWeight.bold,
margin: 10,
visibility:
isValid == null ? false : !isValid,
),
AppButton(
title: "Send",
color: Color(PRIMARY_COLOR),
onPressed: () => {referToDoctor(context)},
)
],
))
],
),
),
);
}
Widget priorityBar(BuildContext _context) {
return Container(
height: MediaQuery.of(context).size.height * 0.065,
width: SizeConfig.screenWidth * 0.9,
margin: EdgeInsets.only(top: 10),
decoration: BoxDecoration(
color: Color(0Xffffffff), borderRadius: BorderRadius.circular(20)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: _priorities.map((item) {
bool _isActive = _priorities[_activePriority] == item ? true : false;
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
InkWell(
child: Center(
child: Container(
height: 40,
width: 90,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: _isActive ? Hexcolor("#B8382B") : Colors.white,
),
child: Center(
child: Text(
item,
style: TextStyle(
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
// backgroundColor:_isActive
// ? Hexcolor("#B8382B")
// : Colors.white,//sideColor,
fontWeight: FontWeight.bold,
),
),
)),
),
onTap: () {
print(_priorities.indexOf(item));
setState(() {
_activePriority = _priorities.indexOf(item);
});
}),
_isActive
? Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white),
alignment: Alignment.center,
height: 3,
width: 90,
)
: Container()
]);
}).toList(),
),
);
}
String getPriority() {
DateTime date = DateTime.now();
switch (_activePriority) {
case 0:
date = date.add(new Duration(hours: 3));
break;
case 1:
date = date.add(new Duration(hours: 6));
break;
case 2:
date = date.add(new Duration(days: 1));
break;
}
var format = DateFormat('yyyy/mm/dd HH:mm a');
var time = format.format(date);
print(time);
return time;
}
void referToDoctor(context) {
if (!validation()) {
return;
}
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
patientsProv.referToDoctor(context,
extension: _extController.value.text,
admissionNo: int.parse(patient.admissionNo),
referringDoctorRemarks: _remarksController.value.text,
frequency: freqId,
patientID: patient.patientId,
patientTypeID: patient.patientType,
priority: (_activePriority + 1).toString(),
roomID: patient.roomId,
selectedClinicID: clinicId.toString(),
selectedDoctorID: doctorId.toString(),
projectID: patient.projectId);
}
bool validation() {
setState(() {
isValid = !_extController.value.text.isNullOrEmpty() &&
!_remarksController.value.text.isNullOrEmpty() &&
freqId != null &&
clinicId != null &&
doctorId != null;
});
return isValid;
}
}

@ -99,7 +99,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
vitalSignDetails.bodyMeasurements vitalSignDetails.bodyMeasurements
}); });
}, },
child: Expanded( child: Container(
child: VitalSignItem( child: VitalSignItem(
des: 'Body Measurements', des: 'Body Measurements',
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
@ -118,7 +118,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
}); });
}, },
child: Expanded( child: Container(
child: VitalSignItem( child: VitalSignItem(
des: 'Temperature', des: 'Temperature',
url: url + 'heartbeat.png', url: url + 'heartbeat.png',

@ -1,3 +1,7 @@
import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/widgets/shared/app_drawer_widget.dart';
//////////////
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../config/size_config.dart'; import '../config/size_config.dart';
@ -7,17 +11,28 @@ import '../widgets/shared/profile_image_widget.dart';
import '../widgets/shared/rounded_container_widget.dart'; import '../widgets/shared/rounded_container_widget.dart';
class ProfileScreen extends StatefulWidget { class ProfileScreen extends StatefulWidget {
ProfileScreen({Key key, this.title}) : super(key: key); ProfileScreen({Key key, this.title,this.doctorProfileall}) : super(key: key);
final String title; final String title;
DoctorProfileModel doctorProfileall ;
@override @override
_ProfileScreenState createState() => _ProfileScreenState(); _ProfileScreenState createState() => _ProfileScreenState();
} }
class _ProfileScreenState extends State<ProfileScreen> { class _ProfileScreenState extends State<ProfileScreen> {
//**************************
DoctorProfileModel doctorProfile ;
//AppDrawer dr;
//******************
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Map arg=ModalRoute.of(context).settings.arguments as Map;//ModalRoute.of(context).settings.arguments;
doctorProfile = arg['doctorProfileall'];
print("******************");
//print(doctorProfile.doctorName);
print("******************");
return AppScaffold( return AppScaffold(
appBarTitle: 'Profile', appBarTitle: 'Profile',
body: ListView(padding: EdgeInsets.zero, children: <Widget>[ body: ListView(padding: EdgeInsets.zero, children: <Widget>[
@ -25,10 +40,10 @@ class _ProfileScreenState extends State<ProfileScreen> {
height: SizeConfig.heightMultiplier * 30, height: SizeConfig.heightMultiplier * 30,
child: DrawerHeader( child: DrawerHeader(
child: ProfileImageWidget( child: ProfileImageWidget(
url: url:doctorProfile.doctorImageURL,
"https://p.kindpng.com/picc/s/404-4042774_profile-photo-circle-circle-profile-picture-png-transparent.png", //"https://p.kindpng.com/picc/s/404-4042774_profile-photo-circle-circle-profile-picture-png-transparent.png",
name: "Dr. Chris evans", name: doctorProfile.doctorName,//"Dr. Chris evans",
des: "Director of medical records", des: doctorProfile.clinicDescription//"Director of medical records",
), ),
), ),
), ),
@ -36,28 +51,30 @@ class _ProfileScreenState extends State<ProfileScreen> {
child: ListView( child: ListView(
children: <Widget>[ children: <Widget>[
DrawerItem( DrawerItem(
"Gender", "Gender"
,
Icons.person_pin, Icons.person_pin,
color: Colors.black, color: Colors.black,
subTitle: "Male", subTitle: doctorProfile.genderDescription//"Male"
,
), ),
DrawerItem( DrawerItem(
"Clinic", "Clinic",
Icons.build, Icons.build,
color: Colors.black, color: Colors.black,
subTitle: "Neurology Clinic", subTitle: doctorProfile.clinicDescription//"Neurology Clinic",
), ),
DrawerItem( DrawerItem(
"Hospital", "Hospital",
Icons.local_hospital, Icons.local_hospital,
color: Colors.black, color: Colors.black,
subTitle: "Al-Takkassussi", subTitle: doctorProfile.projectName,//"Al-Takkassussi",
), ),
DrawerItem( DrawerItem(
"Speciality", "Speciality",
Icons.crop_square, Icons.crop_square,
color: Colors.black, color: Colors.black,
subTitle: "being great", subTitle: doctorProfile.doctorRate==0 ?"being bad":"being great",
), ),
], ],
), ),

@ -82,4 +82,14 @@ class DrAppSharedPreferances {
} }
return json.decode(string); return json.decode(string);
} }
clear() async {
final SharedPreferences prefs = await _prefs;
prefs.clear();
}
remove(String key) async {
final SharedPreferences prefs = await _prefs;
prefs.remove(key);
}
} }

@ -1,12 +1,16 @@
import 'package:doctor_app_flutter/models/list_doctor_working_hours_table_model.dart'; import 'package:doctor_app_flutter/models/list_doctor_working_hours_table_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:doctor_app_flutter/config/config.dart';
import '../config/size_config.dart'; import '../config/size_config.dart';
import '../util/dr_app_toast_msg.dart'; import '../util/dr_app_toast_msg.dart';
import 'package:connectivity/connectivity.dart'; import 'package:connectivity/connectivity.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/* /*
*@author: Elham Rababah *@author: Elham Rababah
@ -48,10 +52,6 @@ class Helpers {
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
}, },
// padding: const EdgeInsets.symmetric(
// horizontal: 16.0,
// vertical: 5.0,
// ),
), ),
CupertinoButton( CupertinoButton(
child: Text( child: Text(
@ -97,7 +97,7 @@ class Helpers {
children: items.map((item) { children: items.map((item) {
return Text( return Text(
'${item["$decKey"]}', '${item["$decKey"]}',
style: TextStyle(fontSize: SizeConfig.textMultiplier * 3), style: TextStyle(fontSize: SizeConfig.textMultiplier * 2),
); );
}).toList(), }).toList(),
@ -164,6 +164,7 @@ class Helpers {
), ),
); );
} }
/* /*
*@author: Amjad Amireh *@author: Amjad Amireh
*@Date:5/5/2020 *@Date:5/5/2020
@ -171,7 +172,7 @@ class Helpers {
*@return: DateTime *@return: DateTime
*@desc: convert String to DateTime *@desc: convert String to DateTime
*/ */
static String checkDate(String dateString) { static String checkDate(String dateString) {
DateTime checkedTime = DateTime.parse(dateString); DateTime checkedTime = DateTime.parse(dateString);
DateTime currentTime = DateTime.now(); DateTime currentTime = DateTime.now();
@ -257,6 +258,7 @@ static String checkDate(String dateString) {
return "Sunday"; return "Sunday";
} }
} }
/* /*
*@author: Mohammad Aljammal *@author: Mohammad Aljammal
*@Date:26/5/2020 *@Date:26/5/2020
@ -275,6 +277,7 @@ static String checkDate(String dateString) {
else else
return ""; return "";
} }
/* /*
*@author: Mohammad Aljammal *@author: Mohammad Aljammal
*@Date:26/5/2020 *@Date:26/5/2020
@ -301,13 +304,14 @@ static String checkDate(String dateString) {
*@return: List<WorkingHours> *@return: List<WorkingHours>
*@desc: convert workingHours string to List<WorkingHours> *@desc: convert workingHours string to List<WorkingHours>
*/ */
static List<WorkingHours> getWorkingHours(String workingHours ){ static List<WorkingHours> getWorkingHours(String workingHours) {
List<WorkingHours> myWorkingHours =[]; List<WorkingHours> myWorkingHours = [];
List<String> listOfHours = workingHours.split('a'); List<String> listOfHours = workingHours.split('a');
listOfHours.forEach((element) { listOfHours.forEach((element) {
WorkingHours workingHours = WorkingHours(); WorkingHours workingHours = WorkingHours();
var from = element.substring(element.indexOf('m ') + 2 , element.indexOf('To')-2); var from = element.substring(
element.indexOf('m ') + 2, element.indexOf('To') - 2);
workingHours.from = from.trim(); workingHours.from = from.trim();
var to = element.substring(element.indexOf('To') + 2); var to = element.substring(element.indexOf('To') + 2);
workingHours.to = to.trim(); workingHours.to = to.trim();
@ -316,9 +320,6 @@ static String checkDate(String dateString) {
return myWorkingHours; return myWorkingHours;
} }
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:12/5/2020 *@Date:12/5/2020
@ -333,4 +334,13 @@ static String checkDate(String dateString) {
} }
return localMsg; return localMsg;
} }
static clearSharedPref() async {
await sharedPref.clear();
}
logout() async {
await clearSharedPref();
Navigator.of(AppGlobal.CONTEX).pushReplacementNamed(LOGIN);
}
} }

@ -71,6 +71,21 @@ class TranslationBase {
String get operations => localizedValues['inPatient'][locale.languageCode]; String get operations => localizedValues['inPatient'][locale.languageCode];
String get patientServices => String get patientServices =>
localizedValues['patientServices'][locale.languageCode]; localizedValues['patientServices'][locale.languageCode];
String get searchMedicine =>
localizedValues['searchMedicine'][locale.languageCode];
String get myReferralPatient =>
localizedValues['myReferralPatient'][locale.languageCode];
String get myReferredPatient =>
localizedValues['myReferredPatient'][locale.languageCode];
String get firstName => localizedValues['firstName'][locale.languageCode];
String get middleName => localizedValues['middleName'][locale.languageCode];
String get lastName => localizedValues['lastName'][locale.languageCode];
String get phoneNumber => localizedValues['phoneNumber'][locale.languageCode];
String get patientID => localizedValues['patientID'][locale.languageCode];
String get patientFile => localizedValues['patientFile'][locale.languageCode];
String get search => localizedValues['search'][locale.languageCode];
String get onlyArrivedPatient =>
localizedValues['onlyArrivedPatient'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -36,9 +36,9 @@ class _LoginFormState extends State<LoginForm> {
String _platformImei = 'Unknown'; String _platformImei = 'Unknown';
String uniqueId = "Unknown"; String uniqueId = "Unknown";
var projectsList = []; var projectsList = [];
bool _isInit = true;
FocusNode focusPass; FocusNode focusPass = FocusNode();
FocusNode focusProject; FocusNode focusProject = FocusNode();
var userInfo = UserModel( var userInfo = UserModel(
UserID: '', UserID: '',
@ -54,16 +54,26 @@ class _LoginFormState extends State<LoginForm> {
void initState() { void initState() {
super.initState(); super.initState();
initPlatformState(); initPlatformState();
} }
@override @override
Widget build(BuildContext context) { void didChangeDependencies() {
final focusPass = FocusNode(); super.didChangeDependencies();
final focusProject = FocusNode(); if (_isInit) {
if (projectsList.length == 0) { if (projectsList.length == 0) {
getProjectsList(); getProjectsList();
} }
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
AuthProvider authProv = Provider.of<AuthProvider>(context); AuthProvider authProv = Provider.of<AuthProvider>(context);
return Form( return Form(
@ -89,8 +99,9 @@ class _LoginFormState extends State<LoginForm> {
userInfo.UserID = value.trim(); userInfo.UserID = value.trim();
}, },
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusPass); focusPass.nextFocus();
}, },
autofocus: false,
), ),
buildSizedBox(), buildSizedBox(),
TextFormField( TextFormField(
@ -109,7 +120,7 @@ class _LoginFormState extends State<LoginForm> {
userInfo.Password = value; userInfo.Password = value;
}, },
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusProject); focusPass.nextFocus();
helpers.showCupertinoPicker( helpers.showCupertinoPicker(
context, projectsList, 'Name', onSelectProject); context, projectsList, 'Name', onSelectProject);
}, },
@ -134,22 +145,8 @@ class _LoginFormState extends State<LoginForm> {
}), }),
buildSizedBox(), buildSizedBox(),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ children: <Widget>[
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Checkbox(
value: true,
activeColor: Theme.of(context).primaryColor,
onChanged: (bool newValue) {}),
Text("Remember me",
style: TextStyle(
fontSize: 2 * SizeConfig.textMultiplier)),
],
),
),
RaisedButton( RaisedButton(
onPressed: () { onPressed: () {
login(context, authProv, widget.changeLoadingStata); login(context, authProv, widget.changeLoadingStata);
@ -204,7 +201,16 @@ class _LoginFormState extends State<LoginForm> {
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)), borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).primaryColor), borderSide: BorderSide(color: Theme.of(context).primaryColor),
)); ),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
);
} }
SizedBox buildSizedBox() { SizedBox buildSizedBox() {
@ -214,6 +220,11 @@ class _LoginFormState extends State<LoginForm> {
} }
login(context, AuthProvider authProv, Function changeLoadingStata) { login(context, AuthProvider authProv, Function changeLoadingStata) {
FocusScopeNode currentFocus = FocusScope.of(context);
// if (!currentFocus.hasPrimaryFocus) {
// currentFocus.unfocus();
// }
changeLoadingStata(true); changeLoadingStata(true);
if (loginFormKey.currentState.validate()) { if (loginFormKey.currentState.validate()) {
loginFormKey.currentState.save(); loginFormKey.currentState.save();
@ -227,7 +238,7 @@ class _LoginFormState extends State<LoginForm> {
sharedPref.setString(TOKEN, res['LogInTokenID']); sharedPref.setString(TOKEN, res['LogInTokenID']);
print("token" + res['LogInTokenID']); print("token" + res['LogInTokenID']);
Navigator.of(context).pushNamed(VERIFICATION_METHODS); Navigator.of(context).pushReplacementNamed(VERIFICATION_METHODS);
} else { } else {
// handel error // handel error
// widget.showCenterShortLoadingToast("watting"); // widget.showCenterShortLoadingToast("watting");
@ -237,7 +248,7 @@ class _LoginFormState extends State<LoginForm> {
}).catchError((err) { }).catchError((err) {
print('$err'); print('$err');
changeLoadingStata(false); changeLoadingStata(false);
helpers.showErrorToast(); helpers.showErrorToast(err);
}); });
} else { } else {
changeLoadingStata(false); changeLoadingStata(false);

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/providers/auth_provider.dart'; import 'package:doctor_app_flutter/providers/auth_provider.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -34,6 +35,8 @@ class _ShowTimerTextState extends State<ShowTimerText> {
setState(() { setState(() {
sec = sec - 1; sec = sec - 1;
if (sec == 0 && min == 0) { if (sec == 0 && min == 0) {
Navigator.of(context).pushNamed(LOGIN);
min = 0; min = 0;
sec = 0; sec = 0;
} else if (sec == 0) { } else if (sec == 0) {
@ -72,11 +75,10 @@ class _ShowTimerTextState extends State<ShowTimerText> {
resendActivatioinCode(); resendActivatioinCode();
}, },
child: Text( child: Text(
min == 0 && sec == 0 ? 'Resend Login Code' : timerText, timerText,
style: TextStyle( style: TextStyle(
fontSize: 3.0 * SizeConfig.textMultiplier, fontSize: 3.0 * SizeConfig.textMultiplier,
color: color: Hexcolor('#B8382C'),
min == 0 && sec == 0 ? Colors.blue : Hexcolor('#B8382C'),
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
), ),

@ -100,6 +100,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
child: TextFormField( child: TextFormField(
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
style: buildTextStyle(), style: buildTextStyle(),
autofocus: true,
maxLength: 1, maxLength: 1,
textAlign: TextAlign.center, textAlign: TextAlign.center,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
@ -190,20 +191,13 @@ class _VerifyAccountState extends State<VerifyAccount> {
validator: validateCodeDigit)) validator: validateCodeDigit))
], ],
), ),
// buildSizedBox(40),
buildSizedBox(20), buildSizedBox(20),
buildText(), buildText(),
// buildSizedBox(10.0),
// Text()
buildSizedBox(40), buildSizedBox(40),
// buildSizedBox(),
RaisedButton( RaisedButton(
onPressed: () { onPressed: () {
verifyAccount( verifyAccount(
authProv, widget.changeLoadingStata); authProv, widget.changeLoadingStata);
// Navigator.of(context).pushNamed(HOME);
}, },
elevation: 0.0, elevation: 0.0,
child: Container( child: Container(
@ -272,7 +266,16 @@ class _VerifyAccountState extends State<VerifyAccount> {
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)), borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).primaryColor), borderSide: BorderSide(color: Theme.of(context).primaryColor),
)); ),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
);
} }
/* /*
@ -283,6 +286,16 @@ class _VerifyAccountState extends State<VerifyAccount> {
*@desc: buildText *@desc: buildText
*/ */
RichText buildText() { RichText buildText() {
String medthodName;
switch (model['OTP_SendType']) {
case 1:
medthodName = 'SMS';
break;
case 2:
medthodName = 'WhatsApp';
break;
default:
}
var text = RichText( var text = RichText(
text: new TextSpan( text: new TextSpan(
style: new TextStyle( style: new TextStyle(
@ -292,7 +305,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
new TextSpan( new TextSpan(
text: 'Login Code ', text: 'Login Code ',
style: TextStyle(fontWeight: FontWeight.w700)), style: TextStyle(fontWeight: FontWeight.w700)),
new TextSpan(text: 'By SMS, Please enter the code') new TextSpan(text: 'By ${medthodName}, Please enter the code')
])); ]));
return text; return text;
} }
@ -321,7 +334,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
verifyAccountFormValue['digit4']; verifyAccountFormValue['digit4'];
print(activationCode); print(activationCode);
int projectID = await sharedPref.getInt(PROJECT_ID); int projectID = await sharedPref.getInt(PROJECT_ID);
Map model = { Map<String, dynamic> model = {
"activationCode": activationCode, "activationCode": activationCode,
"DoctorID": _loggedUser['DoctorID'], "DoctorID": _loggedUser['DoctorID'],
"LogInTokenID": _loggedUser['LogInTokenID'], "LogInTokenID": _loggedUser['LogInTokenID'],
@ -380,7 +393,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
Map<String, dynamic> profile, Function changeLoadingStata) { Map<String, dynamic> profile, Function changeLoadingStata) {
changeLoadingStata(false); changeLoadingStata(false);
sharedPref.setObj(DOCTOR_PROFILE, profile); sharedPref.setObj(DOCTOR_PROFILE, profile);
Navigator.of(context).pushNamed(HOME); Navigator.of(context).pushReplacementNamed(HOME);
} }
Future<dynamic> _asyncSimpleDialog( Future<dynamic> _asyncSimpleDialog(
@ -420,7 +433,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
projectID: clinicInfo.projectID, projectID: clinicInfo.projectID,
tokenID: '', tokenID: '',
languageID: 2); languageID: 2);
authProv.getDocProfiles(docInfo).then((res) { authProv.getDocProfiles(docInfo.toJson()).then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
print("DoctorProfileList ${res['DoctorProfileList'][0]}"); print("DoctorProfileList ${res['DoctorProfileList'][0]}");
loginProcessCompleted(res['DoctorProfileList'][0], changeLoadingStata); loginProcessCompleted(res['DoctorProfileList'][0], changeLoadingStata);

@ -251,11 +251,12 @@ class _VerificationMethodsState extends State<VerificationMethods> {
*@desc: send Activation Code By Otp Notification Type *@desc: send Activation Code By Otp Notification Type
*/ */
sendActivationCodeByOtpNotificationType(oTPSendType, AuthProvider authProv) { sendActivationCodeByOtpNotificationType(oTPSendType, AuthProvider authProv) {
// TODO : build enum for verfication method // TODO : build enum for verfication method
if (oTPSendType == 1 || oTPSendType == 2) { if (oTPSendType == 1 || oTPSendType == 2) {
widget.changeLoadingStata(true); widget.changeLoadingStata(true);
Map model = { Map<String,dynamic> model = {
"LogInTokenID": _loggedUser['LogInTokenID'], "LogInTokenID": _loggedUser['LogInTokenID'],
"Channel": 9, "Channel": 9,
"MobileNumber": _loggedUser['MobileNumber'], "MobileNumber": _loggedUser['MobileNumber'],
@ -270,7 +271,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
widget.changeLoadingStata(false); widget.changeLoadingStata(false);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
Navigator.of(context).pushNamed(VERIFY_ACCOUNT, arguments: {'model':model}); Navigator.of(context).pushReplacementNamed(VERIFY_ACCOUNT, arguments: {'model':model});
} else { } else {
print(res['ErrorEndUserMessage']); print(res['ErrorEndUserMessage']);
helpers.showErrorToast(res['ErrorEndUserMessage']); helpers.showErrorToast(res['ErrorEndUserMessage']);

@ -8,7 +8,7 @@ import 'package:flutter/material.dart';
import '../shared/app_texts_widget.dart'; import '../shared/app_texts_widget.dart';
class DashboardItemIconText extends StatefulWidget { class DashboardItemIconText extends StatefulWidget {
final String icon; final IconData icon;
final String value; final String value;
final String label; final String label;
final Color backgroundColor; final Color backgroundColor;
@ -47,11 +47,12 @@ class _DashboardItemTextsState extends State<DashboardItemIconText> {
alignment: FractionalOffset.topLeft, alignment: FractionalOffset.topLeft,
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: SvgPicture.asset( child: Icon(
widget.icon, widget.icon,
size: SizeConfig.textMultiplier * 2.8,
color: widget.iconColor, color: widget.iconColor,
width: SizeConfig.widthMultiplier * 7, ),
))), )),
Align( Align(
alignment: FractionalOffset.bottomRight, alignment: FractionalOffset.bottomRight,
child: Container( child: Container(

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart'; import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart';
import 'package:doctor_app_flutter/presentation/doctor_app_icons.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
@ -42,7 +43,28 @@ class _DoctorReplyWidgetState extends State<DoctorReplyWidget> {
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SizedBox(width: 5,), SizedBox(width: 5,),
LargeAvatar(name: widget.reply.patientName,url: '',), //LargeAvatar(icon: widget.reply.gender == 0 ? DoctorApp.male : DoctorApp.femaleicon ,),
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment(-1, -1),
end: Alignment(1, 1),
colors: [
Colors.grey[100],
Colors.grey[200],
]),
boxShadow: [
BoxShadow(
color: Color.fromRGBO(0, 0, 0, 0.08),
offset: Offset(0.0, 5.0),
blurRadius: 16.0)
],
borderRadius: BorderRadius.all(Radius.circular(50.0)),
),
width: 80,
height: 80,
child: Icon(widget.reply.gender == 1 ? DoctorApp.male : DoctorApp.femaleicon,size: 80,)),
SizedBox(width: 15,), SizedBox(width: 15,),
Expanded( Expanded(
child: Container( child: Container(

@ -42,7 +42,13 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( InkWell(
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
AppText( AppText(
@ -50,17 +56,13 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
fontSize: 2.5 * SizeConfig.textMultiplier, fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
InkWell( Icon(_showDetails
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Icon(_showDetails
? Icons.keyboard_arrow_up ? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down)), : Icons.keyboard_arrow_down),
], ],
), ),
),
!_showDetails !_showDetails
? Container() ? Container()
: AnimatedContainer( : AnimatedContainer(
@ -87,6 +89,7 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
1.7 * SizeConfig.textMultiplier, 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox(height: 5,),
AppText( AppText(
'${widget.myReferralPatientModel.referringDoctor}', '${widget.myReferralPatientModel.referringDoctor}',
fontSize: fontSize:
@ -108,6 +111,7 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
1.7 * SizeConfig.textMultiplier, 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox(height: 5,),
AppText( AppText(
widget.myReferralPatientModel widget.myReferralPatientModel
.referringClinicDescription, .referringClinicDescription,
@ -135,6 +139,7 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
1.7 * SizeConfig.textMultiplier, 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox(height: 5,),
AppText( AppText(
'${widget.myReferralPatientModel.referringClinicDescription}', '${widget.myReferralPatientModel.referringClinicDescription}',
fontSize: fontSize:
@ -157,6 +162,7 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
1.7 * SizeConfig.textMultiplier, 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox(height: 5,),
AppText( AppText(
widget.myReferralPatientModel widget.myReferralPatientModel
.frequencyDescription, .frequencyDescription,
@ -184,6 +190,7 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
1.7 * SizeConfig.textMultiplier, 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox(height: 5,),
AppText( AppText(
'${widget.myReferralPatientModel.priorityDescription}', '${widget.myReferralPatientModel.priorityDescription}',
fontSize: fontSize:
@ -206,6 +213,7 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
1.7 * SizeConfig.textMultiplier, 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox(height: 5,),
AppText( AppText(
Helpers.getDateFormatted(widget Helpers.getDateFormatted(widget
.myReferralPatientModel .myReferralPatientModel

@ -45,6 +45,7 @@ class MyScheduleWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText('From',fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.bold,), AppText('From',fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.bold,),
SizedBox(height: 5,),
AppText(work.from,fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.w300,) AppText(work.from,fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.w300,)
], ],
), ),
@ -56,6 +57,7 @@ class MyScheduleWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText('To',fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.bold,), AppText('To',fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.bold,),
SizedBox(height: 5,),
AppText(work.to,fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.w300,) AppText(work.to,fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.w300,)
], ],
), ),

@ -1,10 +1,6 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import '../shared/rounded_container_widget.dart'; import '../shared/rounded_container_widget.dart';
import '../shared/app_texts_widget.dart'; import '../shared/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';

@ -29,9 +29,28 @@ class _DynamicElementsState extends State<DynamicElements> {
var selectedDate = DateFormat.yMd().format(pickedDate); var selectedDate = DateFormat.yMd().format(pickedDate);
if (id == '_selectedFromDate') { if (id == '_selectedFromDate') {
// _fromDateController.text = selectedDate;
selectedDate = pickedDate.year.toString() +
"-" +
pickedDate.month.toString().padLeft(2, '0') +
"-" +
pickedDate.day.toString().padLeft(2, '0');
_fromDateController.text = selectedDate; _fromDateController.text = selectedDate;
} else { } else {
selectedDate = pickedDate.year.toString() +
"-" +
pickedDate.month.toString().padLeft(2, '0') +
"-" +
pickedDate.day.toString().padLeft(2, '0');
_toDateController.text = selectedDate; _toDateController.text = selectedDate;
// _toDateController.text = selectedDate;
} }
}); });
}); });
@ -50,7 +69,7 @@ class _DynamicElementsState extends State<DynamicElements> {
AppTextFormField( AppTextFormField(
textInputType: TextInputType.number, textInputType: TextInputType.number,
hintText: 'From', hintText: 'From',
controller: _fromDateController, //_fromDateController, controller: _fromDateController,
inputFormatter: ONLY_DATE, inputFormatter: ONLY_DATE,
onTap: () { onTap: () {
@ -72,8 +91,11 @@ class _DynamicElementsState extends State<DynamicElements> {
if (_fromDateController.text.toString().trim().isEmpty) { if (_fromDateController.text.toString().trim().isEmpty) {
widget._patientSearchFormValues.From = "0"; widget._patientSearchFormValues.From = "0";
} else { } else {
widget._patientSearchFormValues.From = widget._patientSearchFormValues.From = _fromDateController.text.replaceAll("/", "-");
_fromDateController.text;
// _fromDateController.text;
} }
}, },
), ),
@ -83,7 +105,7 @@ class _DynamicElementsState extends State<DynamicElements> {
AppTextFormField( AppTextFormField(
textInputType: TextInputType.number, textInputType: TextInputType.number,
hintText: 'TO', hintText: 'TO',
controller: _fromDateController, //_toDateController, controller: _toDateController,
onTap: () { onTap: () {
_presentDatePicker('_selectedToDate'); _presentDatePicker('_selectedToDate');
}, },
@ -103,7 +125,7 @@ class _DynamicElementsState extends State<DynamicElements> {
if (_toDateController.text.toString().trim().isEmpty) { if (_toDateController.text.toString().trim().isEmpty) {
widget._patientSearchFormValues.To = "0"; widget._patientSearchFormValues.To = "0";
} else { } else {
widget._patientSearchFormValues.To = _toDateController.text; widget._patientSearchFormValues.To = _toDateController.text.replaceAll("/", "-");
} }
}, },
), ),

@ -54,6 +54,8 @@ class LargeAvatar extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var vlr = name;
var asd;
return InkWell( return InkWell(
onTap: disableProfileView onTap: disableProfileView
? null ? null

@ -1,15 +1,8 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import './Profile_general_info_Widget.dart';
import './profile_header_widget.dart';
import './profile_medical_info_widget.dart'; import './profile_medical_info_widget.dart';
import './profile_status_info_widget.dart';
/* /*
*@author: Elham Rababah *@author: Elham Rababah
@ -25,19 +18,12 @@ class PatientProfileWidget extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient']; patient = routeArgs['patient'];
// return ListView(padding: EdgeInsets.zero, children: <Widget>[
// ProfileHeaderWidget(patient: patient),
// ProfileGeneralInfoWidget(patient: patient),
// ProfileMedicalInfoWidget(patient: patient),
// ProfileStatusInfoWidget()
// ]);
return CustomScrollView(primary: false, slivers: <Widget>[ return CustomScrollView(primary: false, slivers: <Widget>[
SliverList( SliverList(
delegate: SliverChildListDelegate( delegate: SliverChildListDelegate(
[ [
Expanded( Container(
flex: 1,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
@ -78,15 +64,9 @@ class PatientProfileWidget extends StatelessWidget {
), ),
SliverPadding( SliverPadding(
padding: const EdgeInsets.fromLTRB(20, 30, 15, 10), padding: const EdgeInsets.fromLTRB(20, 30, 15, 10),
sliver: ProfileMedicalInfoWidget()) sliver: ProfileMedicalInfoWidget(
patient: patient,
))
]); ]);
// Container(
// child: Column(children: <Widget>[
// Expanded(
// flex: 2,
// child: ,
// )
// ]));
} }
} }

@ -0,0 +1,87 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'large_avatar.dart';
class PrescriptionInPatientWidget extends StatelessWidget {
final List<PrescriptionReportForInPatient> prescriptionReportForInPatientList;
PrescriptionInPatientWidget(
{Key key, this.prescriptionReportForInPatientList});
@override
Widget build(BuildContext context) {
return Container(
child: prescriptionReportForInPatientList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Prescriptions')
: Container(
margin: EdgeInsets.fromLTRB(SizeConfig.realScreenWidth * 0.05, 0,
SizeConfig.realScreenWidth * 0.05, 0),
child: ListView.builder(
itemCount: prescriptionReportForInPatientList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.of(context).pushNamed(IN_PATIENT_PRESCRIPTIONS_DETAILS, arguments: {
'prescription': prescriptionReportForInPatientList[index]
});
},
child: CardWithBgWidgetNew(
widget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
name:
prescriptionReportForInPatientList[index]
.createdByName,
radius: 10,
width: 70,
),
Expanded(
child: Container(
margin:
EdgeInsets.only(left: 15, right: 15),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${prescriptionReportForInPatientList[index].createdByName}',
fontSize:
2.5 * SizeConfig.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
'${prescriptionReportForInPatientList[index].itemDescription}',
fontSize:
2.5 * SizeConfig.textMultiplier,
color:
Theme.of(context).primaryColor),
SizedBox(
height: 8,
),
],
),
),
)
],
),
],
),
));
},
),
),
);
}
}

@ -0,0 +1,94 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart';
import 'package:doctor_app_flutter/screens/patients/out_patient_prescription_details_screen.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'large_avatar.dart';
class PrescriptionOutPatientWidget extends StatelessWidget {
final List<PrescriptionResModel> patientPrescriptionsList;
PrescriptionOutPatientWidget({Key key, this.patientPrescriptionsList});
@override
Widget build(BuildContext context) {
return Container(
child: patientPrescriptionsList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Prescriptions')
: Container(
margin: EdgeInsets.fromLTRB(SizeConfig.realScreenWidth * 0.05, 0,
SizeConfig.realScreenWidth * 0.05, 0),
child: ListView.builder(
itemCount: patientPrescriptionsList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
OutPatientPrescriptionDetailsScreen(
prescriptionResModel:
patientPrescriptionsList[index],
),
),
);
},
child: CardWithBgWidgetNew(
widget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
url: patientPrescriptionsList[index]
.doctorImageURL,
name: patientPrescriptionsList[index]
.doctorName,
radius: 10,
width: 70,
),
Expanded(
child: Container(
margin:
EdgeInsets.only(left: 15, right: 15),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientPrescriptionsList[index].name}',
fontSize:
2.5 * SizeConfig.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
'${patientPrescriptionsList[index].clinicDescription}',
fontSize:
2.5 * SizeConfig.textMultiplier,
color:
Theme.of(context).primaryColor),
SizedBox(
height: 8,
),
],
),
),
)
],
),
],
),
));
},
),
),
);
}
}

@ -1,13 +1,10 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/routes.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart'; import '../../shared/app_texts_widget.dart';
import '../../shared/rounded_container_widget.dart';
/* /*
*@author: Elham Rababah *@author: Elham Rababah
@ -21,8 +18,6 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
PatiantInformtion patient; PatiantInformtion patient;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// final double contWidth = SizeConfig.realScreenWidth * 0.70;
// final double contHeight = SizeConfig.screenHeight * 0.30;
return SliverGrid.count( return SliverGrid.count(
crossAxisSpacing: 10, crossAxisSpacing: 10,
mainAxisSpacing: 20, mainAxisSpacing: 20,
@ -74,7 +69,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
child: PatientProfileButton( child: PatientProfileButton(
key: key, key: key,
patient: patient, patient: patient,
route: PRESCRIPTIONS, route: REFER_PATIENT,
name: 'Refer Patient', name: 'Refer Patient',
icon: 'note.png')), icon: 'note.png')),
Visibility( Visibility(
@ -86,141 +81,6 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
name: 'Orders', name: 'Orders',
icon: 'radiology-1.png')), icon: 'radiology-1.png')),
]); ]);
// child: ListView(
// children: <Widget>[
// Padding(
// padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 14),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// AppText(
// 'Patient Medical Information ',
// fontSize: SizeConfig.textMultiplier * 3,
// fontWeight: FontWeight.w700,
// color: Hexcolor('#58434F'),
// ),
// SizedBox(
// height: 20,
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// children: <Widget>[
// InkWell(
// onTap: () {
// navigator(context, VITAL_SIGN_DETAILS);
// },
// child: CircleAvatarWidget(
// des: 'Vital Sign',
// url: url + 'heartbeat.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// InkWell(
// onTap: () {
// navigator(context, LAB_ORDERS);
// },
// child: CircleAvatarWidget(
// des: 'Lab Result',
// url: url + 'lab.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// InkWell(
// onTap: () {
// navigator(context, PRESCRIPTIONS);
// },
// child: CircleAvatarWidget(
// des: 'Prescription',
// url: url + 'note.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// InkWell(
// //RADIOLOGY
// onTap: () {
// navigator(context, RADIOLOGY);
// },
// child: CircleAvatarWidget(
// des: 'Radiology',
// url: url + 'radiology-1.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ],
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// children: <Widget>[
// Visibility(
// visible: selectedPatientType != 0 && selectedPatientType != 5 ,
// child: InkWell(
// onTap: () {
// navigator(context, PROGRESS_NOTE);
// },
// child: CircleAvatarWidget(
// des: 'Progress Notes',
// url: url + 'heartbeat.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// Visibility(
// child: InkWell(
// onTap: () {
// navigator(context, PATIENT_INSURANCE_APPROVALS);
// },
// child: CircleAvatarWidget(
// des: 'Insurance Aprovals',
// url: url + 'lab.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// Visibility(
// visible: selectedPatientType != 0 && selectedPatientType != 5 && selectedPatientType != 2,
// child: InkWell(
// onTap: () {
// navigator(context, PRESCRIPTIONS);
// },
// child: CircleAvatarWidget(
// des: 'Refer Patient ',
// url: url + 'note.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// Visibility(
// visible: selectedPatientType != 0 && selectedPatientType != 5,
// child: InkWell(
// onTap: () {
// navigator(context, PATIENT_ORDERS);
// },
// child: CircleAvatarWidget(
// des: 'Orders',
// url: url + 'radiology-1.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// ],
// )
// ],
// ),
// ),
// ],
// ),
// width: contWidth,
// height: contHeight,
//);
} }
} }
@ -291,10 +151,7 @@ class PatientProfileButton extends StatelessWidget {
navigator(context, this.route); navigator(context, this.route);
}, },
child: Column(children: <Widget>[ child: Column(children: <Widget>[
Expanded( Container(
flex: 1,
child: Expanded(
child: Container(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
padding: EdgeInsets.all(5), padding: EdgeInsets.all(5),
child: new AppText( child: new AppText(
@ -304,10 +161,8 @@ class PatientProfileButton extends StatelessWidget {
textAlign: TextAlign.left, textAlign: TextAlign.left,
fontSize: SizeConfig.textMultiplier * 2, fontSize: SizeConfig.textMultiplier * 2,
), ),
)),
), ),
Expanded( Container(
flex: 1,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ children: <Widget>[

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -81,39 +82,33 @@ class _AppDrawerState extends State<AppDrawer> {
), ),
), ),
onTap: () { onTap: () {
Navigator.of(context).pushNamed(PROFILE); //Navigator.of(context).pushNamed(PROFILE);
Navigator.of(context).pushNamed(PROFILE, arguments: {'title':doctorProfile.doctorName,
"doctorProfileall": doctorProfile
});
}, },
), ),
), ),
InkWell(
child: DrawerItem("My Schedule", Icons.table_chart),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (_) => ScheduleProvider(),
child: MyScheduleScreen(),
),
),
);
},
),
InkWell( InkWell(
child: DrawerItem("Settings", Icons.settings), child: DrawerItem("Settings", Icons.settings),
onTap: () { onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(SETTINGS); Navigator.of(context).pushNamed(SETTINGS);
}, },
), ),
InkWell( InkWell(
child: DrawerItem("QR Reader", Icons.search), child: DrawerItem("QR Reader", Icons.search),
onTap: () { onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(QR_READER); Navigator.of(context).pushNamed(QR_READER);
}, },
), ),
InkWell( InkWell(
child: DrawerItem("lOGOUT", Icons.exit_to_app), child: DrawerItem("lOGOUT", Icons.exit_to_app),
onTap: () { onTap: () async {
await Helpers.clearSharedPref();
Navigator.pop(context);
Navigator.of(context).pushNamed(LOGIN); Navigator.of(context).pushNamed(LOGIN);
}, },
), ),

@ -30,6 +30,7 @@ class AppExpandableNotifier extends StatelessWidget {
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Text( child: Text(
"See Graph Details", "See Graph Details",
style: TextStyle(fontWeight: FontWeight.bold),
)), )),
collapsed: Text(''), collapsed: Text(''),
expanded: bodyWid, expanded: bodyWid,

@ -1,13 +1,9 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import '../../config/size_config.dart';
import '../../presentation/doctor_app_icons.dart'; import '../../presentation/doctor_app_icons.dart';
import '../../widgets/shared/app_drawer_widget.dart';
import '../../widgets/shared/app_loader_widget.dart'; import '../../widgets/shared/app_loader_widget.dart';
import '../../widgets/shared/custom_shape_clipper.dart';
class AppScaffold extends StatelessWidget { class AppScaffold extends StatelessWidget {
String appBarTitle; String appBarTitle;
@ -18,6 +14,7 @@ class AppScaffold extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.CONTEX = context;
return Scaffold( return Scaffold(
backgroundColor: Hexcolor('#F5F5F5'), backgroundColor: Hexcolor('#F5F5F5'),
appBar: appBarTitle != '' appBar: appBarTitle != ''
@ -37,12 +34,11 @@ class AppScaffold extends StatelessWidget {
}), }),
centerTitle: true, centerTitle: true,
actions: <Widget>[ actions: <Widget>[
ProfileImageWidget( IconButton(
height: 50, icon: Icon(DoctorApp.home_icon_active),
width: 50, color: Colors.white, //Colors.black,
url: onPressed: () => Navigator.pushNamedAndRemoveUntil(context, HOME,(r) => false ),
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", ),
)
], ],
) )
: null, : null,

@ -18,7 +18,8 @@ class AppTextFormField extends FormField<String> {
TextEditingController controller, TextEditingController controller,
bool autovalidate = true, bool autovalidate = true,
TextInputType textInputType, TextInputType textInputType,
String hintText String hintText,
FocusNode focusNode
}) : super( }) : super(
onSaved: onSaved, onSaved: onSaved,
validator: validator, validator: validator,
@ -27,6 +28,7 @@ class AppTextFormField extends FormField<String> {
return Column( return Column(
children: <Widget>[ children: <Widget>[
TextFormField( TextFormField(
focusNode: focusNode,
keyboardType: textInputType, keyboardType: textInputType,
inputFormatters: [WhitelistingTextInputFormatter(RegExp(inputFormatter)),], inputFormatters: [WhitelistingTextInputFormatter(RegExp(inputFormatter)),],
onChanged: onChanged?? (value){ onChanged: onChanged?? (value){

@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../app_texts_widget.dart';
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:12/5/2020 *@Date:12/5/2020
@ -18,10 +20,11 @@ class DrAppEmbeddedError extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Center( return Center(
child: Text( child: AppText(
error, error,
style: TextStyle(color: Theme.of(context).errorColor), color: Theme.of(context).errorColor,
textAlign: TextAlign.center, textAlign: TextAlign.center,
margin: 10,
), ),
); );
} }

@ -71,7 +71,6 @@ flutter:
# To add assets to your application, add an assets section, like this: # To add assets to your application, add an assets section, like this:
assets: assets:
- assets/images/ - assets/images/
- assets/images/dashboard_icon/
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see

Loading…
Cancel
Save