Merge branch 'ibrahim-merge' into 'master'

Ibrahim merge

See merge request Cloud_Solution/doctor_app_flutter!112
merge-requests/113/merge
Mohammad Aljammal 6 years ago
commit dc81540b7a

@ -0,0 +1,37 @@
<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>

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1,3 @@
<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>

After

Width:  |  Height:  |  Size: 913 B

@ -0,0 +1,3 @@
<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>

After

Width:  |  Height:  |  Size: 930 B

@ -0,0 +1,6 @@
<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>

After

Width:  |  Height:  |  Size: 3.9 KiB

@ -0,0 +1,20 @@
<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>

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,22 @@
<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>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,22 @@
<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>

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -0,0 +1,7 @@
<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>

After

Width:  |  Height:  |  Size: 975 B

@ -0,0 +1,7 @@
<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>

After

Width:  |  Height:  |  Size: 994 B

@ -0,0 +1,15 @@
<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>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,5 @@
<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>

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,8 @@
<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>

After

Width:  |  Height:  |  Size: 4.0 KiB

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,27 @@
<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>

After

Width:  |  Height:  |  Size: 6.9 KiB

@ -0,0 +1,6 @@
<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>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1,7 @@
<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>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,5 @@
<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>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,32 @@
<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>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

@ -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",
@ -145,6 +131,62 @@
"search": [ "search": [
"schedule_icon" "schedule_icon"
] ]
},
{
"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"
]
} }
] ]
} }

@ -1 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"

@ -1 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"

@ -0,0 +1,90 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
generated_key_values = {}
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) do |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
generated_key_values[podname] = podpath
else
puts "Invalid plugin specification: #{line}"
end
end
generated_key_values
end
target 'Runner' do
use_frameworks!
use_modular_headers!
# Flutter Pod
copied_flutter_dir = File.join(__dir__, 'Flutter')
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
unless File.exist?(copied_framework_path)
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end
end
# Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter'
# Plugin Pods
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.each do |name, path|
symlink = File.join('.symlinks', 'plugins', name)
File.symlink(path, symlink)
pod name, :path => File.join(symlink, 'ios')
end
end
# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
install! 'cocoapods', :disable_input_output_paths => true
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end

@ -0,0 +1,127 @@
PODS:
- barcode_scan (0.0.1):
- Flutter
- MTBBarcodeScanner
- SwiftProtobuf
- connectivity (0.0.1):
- Flutter
- Reachability
- connectivity_macos (0.0.1):
- Flutter
- device_info (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_flexible_toast (0.0.1):
- Flutter
- flutter_plugin_android_lifecycle (0.0.1):
- Flutter
- hexcolor (0.0.1):
- Flutter
- imei_plugin (0.0.1):
- Flutter
- local_auth (0.0.1):
- Flutter
- MTBBarcodeScanner (5.0.11)
- "permission_handler (5.0.0+hotfix.5)":
- Flutter
- Reachability (3.2)
- shared_preferences (0.0.1):
- Flutter
- shared_preferences_macos (0.0.1):
- Flutter
- shared_preferences_web (0.0.1):
- Flutter
- SwiftProtobuf (1.9.0)
- url_launcher (0.0.1):
- Flutter
- url_launcher_macos (0.0.1):
- Flutter
- url_launcher_web (0.0.1):
- Flutter
DEPENDENCIES:
- barcode_scan (from `.symlinks/plugins/barcode_scan/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
- device_info (from `.symlinks/plugins/device_info/ios`)
- Flutter (from `Flutter`)
- flutter_flexible_toast (from `.symlinks/plugins/flutter_flexible_toast/ios`)
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- hexcolor (from `.symlinks/plugins/hexcolor/ios`)
- imei_plugin (from `.symlinks/plugins/imei_plugin/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
- shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
SPEC REPOS:
https://cdn.cocoapods.org/:
- MTBBarcodeScanner
- Reachability
- SwiftProtobuf
EXTERNAL SOURCES:
barcode_scan:
:path: ".symlinks/plugins/barcode_scan/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
connectivity_macos:
:path: ".symlinks/plugins/connectivity_macos/ios"
device_info:
:path: ".symlinks/plugins/device_info/ios"
Flutter:
:path: Flutter
flutter_flexible_toast:
:path: ".symlinks/plugins/flutter_flexible_toast/ios"
flutter_plugin_android_lifecycle:
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
hexcolor:
:path: ".symlinks/plugins/hexcolor/ios"
imei_plugin:
:path: ".symlinks/plugins/imei_plugin/ios"
local_auth:
:path: ".symlinks/plugins/local_auth/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
shared_preferences:
:path: ".symlinks/plugins/shared_preferences/ios"
shared_preferences_macos:
:path: ".symlinks/plugins/shared_preferences_macos/ios"
shared_preferences_web:
:path: ".symlinks/plugins/shared_preferences_web/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
url_launcher_macos:
:path: ".symlinks/plugins/url_launcher_macos/ios"
url_launcher_web:
:path: ".symlinks/plugins/url_launcher_web/ios"
SPEC CHECKSUMS:
barcode_scan: a5c27959edfafaa0c771905bad0b29d6d39e4479
connectivity: 6e94255659cc86dcbef1d452ad3e0491bb1b3e75
connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
flutter_flexible_toast: 0547e740cae0c33bb7c51bcd931233f4584e1143
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
hexcolor: fdfb9c4258ad96e949c2dbcdf790a62194b8aa89
imei_plugin: cb1af7c223ac2d82dcd1457a7137d93d65d2a3cd
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
permission_handler: 6226fcb78b97c7c7458a95c7346a11d5184fec12
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
SwiftProtobuf: ecbec1be9036d15655f6b3443a1c4ea693c97932
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
PODFILE CHECKSUM: 1b66dae606f75376c5f2135a8290850eeb09ae83
COCOAPODS: 1.9.3

@ -9,14 +9,11 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
B650DC3076E9D70CB188286A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93A5F83B23AB032D1E096663 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@ -26,8 +23,6 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -38,18 +33,20 @@
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
75DD06875D42C7903A76DF9F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
93A5F83B23AB032D1E096663 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9D4B7DB43C6A6C849D2387CE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
E698D7B14B12DF768FE47A1A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -57,20 +54,27 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, B650DC3076E9D70CB188286A /* Pods_Runner.framework in Frameworks */,
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
7D66D387293CE5376A07EC5F /* Pods */ = {
isa = PBXGroup;
children = (
E698D7B14B12DF768FE47A1A /* Pods-Runner.debug.xcconfig */,
75DD06875D42C7903A76DF9F /* Pods-Runner.release.xcconfig */,
9D4B7DB43C6A6C849D2387CE /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = { 9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3B80C3931E831B6300D905FE /* App.framework */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEBA1CF902C7004384FC /* Flutter.framework */,
9740EEB21CF90195004384FC /* Debug.xcconfig */, 9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */,
@ -84,6 +88,8 @@
9740EEB11CF90186004384FC /* Flutter */, 9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
7D66D387293CE5376A07EC5F /* Pods */,
F984EB986238F1809678CD84 /* Frameworks */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@ -118,6 +124,14 @@
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
F984EB986238F1809678CD84 /* Frameworks */ = {
isa = PBXGroup;
children = (
93A5F83B23AB032D1E096663 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -125,12 +139,14 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = ( buildPhases = (
986D76F6694E0D6D8C5CDAAB /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
08568E6EE9BA48E55B7C3865 /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@ -152,6 +168,7 @@
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1; CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = 3A359E86ZF;
LastSwiftMigration = 1100; LastSwiftMigration = 1100;
}; };
}; };
@ -189,6 +206,21 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
08568E6EE9BA48E55B7C3865 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -201,7 +233,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
}; };
9740EEB61CF901F6004384FC /* Run Script */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
@ -217,6 +249,28 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
}; };
986D76F6694E0D6D8C5CDAAB /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
@ -309,6 +363,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -320,8 +375,8 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.doctorAppFlutter; PRODUCT_BUNDLE_IDENTIFIER = com.hmg.doctorApp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Runner;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
@ -443,6 +498,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -454,8 +510,8 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.doctorAppFlutter; PRODUCT_BUNDLE_IDENTIFIER = com.hmg.doctorApp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Runner;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -470,6 +526,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -481,8 +538,8 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.doctorAppFlutter; PRODUCT_BUNDLE_IDENTIFIER = com.hmg.doctorApp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Runner;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

@ -27,8 +27,6 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"> shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion> <MacroExpansion>
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
@ -38,8 +36,8 @@
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
</MacroExpansion> </MacroExpansion>
<AdditionalOptions> <Testables>
</AdditionalOptions> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction
buildConfiguration = "Debug" buildConfiguration = "Debug"
@ -61,8 +59,6 @@
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction> </LaunchAction>
<ProfileAction <ProfileAction
buildConfiguration = "Profile" buildConfiguration = "Profile"

@ -4,4 +4,7 @@
<FileRef <FileRef
location = "group:Runner.xcodeproj"> location = "group:Runner.xcodeproj">
</FileRef> </FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace> </Workspace>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

@ -11,7 +11,7 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>doctor_app_flutter</string> <string>Doctor App</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
@ -22,12 +22,14 @@
<string>$(FLUTTER_BUILD_NUMBER)</string> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key> <key>UIMainStoryboardFile</key>
<string>Main</string> <string>Main</string>
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
<key>UISupportedInterfaceOrientations</key> <key>UISupportedInterfaceOrientations</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
@ -43,7 +45,5 @@
</array> </array>
<key>UIViewControllerBasedStatusBarAppearance</key> <key>UIViewControllerBasedStatusBarAppearance</key>
<false/> <false/>
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>
</dict> </dict>
</plist> </plist>

@ -0,0 +1,18 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/interceptor/http_interceptor.dart';
import 'package:http/http.dart';
// OWNER : Ibrahim albitar
// DATE : 22-04-2020
// DESCRIPTION : Custom App client to pin base url for all srvices
class AppClient {
static Client client = HttpInterceptor().getClient();
static Future<Response> post(dynamic path, {dynamic body}) async {
String _fullUrl = BASE_URL + path;
final response = await client.post(_fullUrl, body: body);
return response;
}
}

@ -3,14 +3,9 @@ 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/models/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/routes.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:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:http_interceptor/http_methods.dart';
import 'package:http_interceptor/models/request_data.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
Helpers helpers = new Helpers(); Helpers helpers = new Helpers();
@ -38,9 +33,6 @@ class BaseAppClient {
Function(String error, int statusCode) onFailure, Function(String error, int statusCode) onFailure,
}) async { }) async {
String url = BASE_URL + endPoint; String url = BASE_URL + endPoint;
RequestData data = RequestData(body: body,baseUrl: url,method: Method.POST);
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);
@ -64,7 +56,7 @@ class BaseAppClient {
print("URL : $url"); print("URL : $url");
print("Body : ${json.encode(body)}"); print("Body : ${json.encode(body)}");
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
final response = await http.post(url, final response = await http.post(url,
body: json.encode(body), body: json.encode(body),
headers: { headers: {
@ -77,7 +69,8 @@ class BaseAppClient {
} else { } else {
var parsed = json.decode(response.body.toString()); var parsed = json.decode(response.body.toString());
if (!parsed['IsAuthenticated']) { if (!parsed['IsAuthenticated']) {
Navigator.of(AppGlobal.CONTEX).pushNamed(LOGIN); await helpers.logout();
helpers.showErrorToast('Your session expired Please login agian'); helpers.showErrorToast('Your session expired Please login agian');
} else if (parsed['MessageStatus'] == 1) { } else if (parsed['MessageStatus'] == 1) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);

@ -1,14 +1,17 @@
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/';
const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems_Region"; const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems_Region";
const PHARMACY_LIST_URL = "Patients.svc/REST/GetPharmcyList"; const PHARMACY_LIST_URL = "Patients.svc/REST/GetPharmcyList";
const PATIENT_PROGRESS_NOTE_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient"; const PATIENT_PROGRESS_NOTE_URL =
const PATIENT_INSURANCE_APPROVALS_URL = "DoctorApplication.svc/REST/GetApprovalStatusForInpatient"; "DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_ORDERS_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient"; const PATIENT_INSURANCE_APPROVALS_URL =
"DoctorApplication.svc/REST/GetApprovalStatusForInpatient";
const PATIENT_ORDERS_URL =
"DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_REFER_TO_DOCTOR_URL = "DoctorApplication.svc/REST/ReferToDoctor"; const PATIENT_REFER_TO_DOCTOR_URL = "DoctorApplication.svc/REST/ReferToDoctor";
const PATIENT_GET_DOCTOR_BY_CLINIC_URL = "DoctorApplication.svc/REST/GetDoctorsByClinicID"; 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_LIST_REFERAL_URL = "Lists.svc/REST/GetList_STPReferralFrequency";
@ -21,9 +24,9 @@ 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 = 0;
//*********change value to decode json from Dropdown ************1 //*********change value to decode json from Dropdown ************
var SERVICES_PATIANT = [ var SERVICES_PATIANT = [
"GetMyOutPatient", "GetMyOutPatient",
"GetMyInPatient", "GetMyInPatient",
@ -63,12 +66,11 @@ const IP_ADDRESS = '11.11.11.11';
const VERSION_ID = 1.2; const VERSION_ID = 1.2;
const CHANNEL = 9; const CHANNEL = 9;
const SESSION_ID = 'BlUSkYymTt'; const SESSION_ID = 'BlUSkYymTt';
const IS_LOGIN_FOR_DOCTOR_APP = true; const IS_LOGIN_FOR_DOCTOR_APP = true;
const PATIENT_OUT_SA = false; const PATIENT_OUT_SA = false;
/// Timer Info /// Timer Info
const TIMER_MIN =10; const TIMER_MIN = 10;
class AppGlobal{ class AppGlobal{
static var CONTEX; static var CONTEX;
} }

@ -4,35 +4,42 @@ const Map<String, Map<String, String>> localizedValues = {
'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'},
'lanEnglish': {'en': 'English', 'ar': 'English'}, 'lanEnglish': {'en': 'English', 'ar': 'English'},
'lanArabic': {'en': 'العربية', 'ar': 'العربية'}, 'lanArabic': {'en': 'العربية', 'ar': 'العربية'},
'doctorReply':{'en': 'Doctor Reply', 'ar': 'رد الطبيب'}, 'doctorReply': {'en': 'Doctor Reply', 'ar': 'رد الطبيب'},
'time' :{'en': 'Time','ar':'الوقت'}, 'time': {'en': 'Time', 'ar': 'الوقت'},
'fileNo' :{'en':'File No', 'ar':'رقم الملف'}, 'fileNo': {'en': 'File No', 'ar': 'رقم الملف'},
'mobileNo' :{'en':'Mobile No', 'ar':'رقم الموبايل'}, 'mobileNo': {'en': 'Mobile No', 'ar': 'رقم الموبايل'},
'messagesScreenToolbarTitle' : {'en': 'Messages','ar': 'الرسائل' }, 'messagesScreenToolbarTitle': {'en': 'Messages', 'ar': 'الرسائل'},
'mySchedule' : {'en': 'My Schedule', 'ar' : 'جدولي'}, 'mySchedule': {'en': 'My Schedule', 'ar': 'جدولي'},
'errorNoSchedule' :{'en': 'You don\'t have any Schedule' , 'ar': 'ليس لديك أي جدول زمني'}, 'errorNoSchedule': {
'verify': {'en': 'Verify', 'ar' : 'تحقق'}, 'en': 'You don\'t have any Schedule',
'referralDoctor':{'en': 'Referral Doctor', 'ar' : 'الطبيب المُحول إليه'}, 'ar': 'ليس لديك أي جدول زمني'
'referringClinic':{'en': 'Referring Clinic', 'ar' : 'العيادة المُحول إليها'}, },
'frequency':{'en': 'Frequency', 'ar' : 'نوع التحويلا'}, 'verify': {'en': 'Verify', 'ar': 'تحقق'},
'priority':{'en': 'Priority', 'ar' : 'الأولوية'}, 'referralDoctor': {'en': 'Referral Doctor', 'ar': 'الطبيب المُحول إليه'},
'maxResponseTime':{'en': 'Max Response Time', 'ar' : 'الوقت الأقصى للرد'}, 'referringClinic': {'en': 'Referring Clinic', 'ar': 'العيادة المُحول إليها'},
'clinicDetailsandRemarks':{'en': 'Clinic Details and Remarks', 'ar' : 'ملاحضات وتفاصيل العيادة'}, 'frequency': {'en': 'Frequency', 'ar': 'نوع التحويلا'},
'answerSuggestions':{'en': 'Answer/Suggestions', 'ar' : 'ملاحضات وتفاصيل العيادة'}, 'priority': {'en': 'Priority', 'ar': 'الأولوية'},
'outPatients':{'en': 'Out-Patients', 'ar' : 'ةالمريض الخارجي'}, 'maxResponseTime': {'en': 'Max Response Time', 'ar': 'الوقت الأقصى للرد'},
'searchPatient':{'en': 'Search Patient', 'ar' : 'البحث عن مريض'}, 'clinicDetailsandRemarks': {
'labResult':{'en': 'Lab Result', 'ar' : 'نتيجة المختبر'}, 'en': 'Clinic Details and Remarks',
'todayStatistics':{'en': 'Today Statistics', 'ar' : 'إحصائيات اليوم'}, 'ar': 'ملاحضات وتفاصيل العيادة'
'arrived':{'en': 'Arrived', 'ar' : 'وصل'}, },
'er':{'en': 'ER', 'ar' : 'حالة طوارئ'}, 'answerSuggestions': {
'walkIn':{'en': 'Walk-in', 'ar' : 'ادخل'}, 'en': 'Answer/Suggestions',
'notArrived':{'en': 'Not Arrived', 'ar' : 'لم يصل'}, 'ar': 'ملاحضات وتفاصيل العيادة'
'radiology':{'en': 'Radiology', 'ar' : 'الأشعة'}, },
'referral':{'en': 'Referral', 'ar' : 'االإحالة'}, 'outPatients': {'en': 'Out-Patients', 'ar': 'ةالمريض الخارجي'},
'inPatient':{'en': 'In-Patient', 'ar' : 'االمريض الداخلي'}, 'searchPatient': {'en': 'Search Patient', 'ar': 'البحث عن مريض'},
'operations':{'en': 'Operations', 'ar' : 'عمليات'}, 'labResult': {'en': 'Lab Result', 'ar': 'نتيجة المختبر'},
'patientServices':{'en': 'Patient Services', 'ar' : 'خدمات المرضى'}, 'todayStatistics': {'en': 'Today Statistics', 'ar': 'إحصائيات اليوم'},
'arrived': {'en': 'Arrived', 'ar': 'وصل'},
'er': {'en': 'ER', 'ar': 'حالة طوارئ'},
'walkIn': {'en': 'Walk-in', 'ar': 'ادخل'},
'notArrived': {'en': 'Not Arrived', 'ar': 'لم يصل'},
'radiology': {'en': 'Radiology', 'ar': 'الأشعة'},
'referral': {'en': 'Referral', 'ar': 'االإحالة'},
'inPatient': {'en': 'In-Patient', 'ar': 'االمريض الداخلي'},
'operations': {'en': 'Operations', 'ar': 'عمليات'},
'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'},
'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'}
}; };

@ -0,0 +1,65 @@
import 'dart:convert';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/providers/auth_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_interceptor.dart';
import '../providers/auth_provider.dart';
import '../util/dr_app_shared_pref.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
List<String> publicUrls = [
LOGIN_URL,
SELECT_DEVICE_IMEI,
MEMBER_CHECK_ACTIVATION_CODE_NEW,
SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE
];
class HttpInterceptor extends InterceptorContract {
Client getClient(){
return HttpClientWithInterceptor.build(interceptors: [this]);
}
Future<RequestData> interceptRequest({RequestData data}) async {
print('RequestData ${data.body}');
print('RequestData ${data.url}');
try {
data.headers["Content-Type"] = "application/json";
data.headers["Accept"] = "application/json";
// if (publicUrls.contains(data.url)) {
// var loggedUserInfo = await sharedPref.getObj('loggedUser');
// var token = await sharedPref.getString(TOKEN);
// // print("token"+token);
// // print('loggedUserInfo${loggedUserInfo["LogInTokenID"]}');
// // // the sevices handel the token in differat name so I ask to be change
// // // we must change the imple
// var body = json.decode(data.body);
// body['LogInTokenID']=token;
// data.body = json.encode(body);
// // data.body['LogInTokenID'] = '';
// } else {
// if (data.body['LogInTokenID']) {
// data.body['LogInTokenID'] = '';
// }
// if (data.body['TokenID']) {
// data.body['TokenID'] = '';
// }
// }
} catch (e) {
print(e);
}
// print('data.body${data.body}');
return data;
}
@override
Future<ResponseData> interceptResponse({ResponseData data}) async {
// print('ResponseData ${data.body}');
return data;
}
}

@ -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(

@ -1,218 +1,222 @@
List <Map> ListProject= [ List<Map> ListProject = [
{ {
"Desciption": "Dubai Hospital", "Desciption": "Dubai Hospital",
"DesciptionN": null, "DesciptionN": null,
"ID": 2, "ID": 2,
"LegalName": "Dr. Sulaiman Al Habib Hospital FZ - LLC ", "LegalName": "Dr. Sulaiman Al Habib Hospital FZ - LLC ",
"LegalNameN": "مستشفى الدكتور سليمان الحبيب منطقة حرة - ذ.م.م", "LegalNameN": "مستشفى الدكتور سليمان الحبيب منطقة حرة - ذ.م.م",
"Name": "Dubai Hospital", "Name": "Dubai Hospital",
"NameN": null, "NameN": null,
"PhoneNumber": "+97144297777", "PhoneNumber": "+97144297777",
"SetupID": "505005", "SetupID": "505005",
"DistanceInKilometers": 0, "DistanceInKilometers": 0,
"IsActive": true, "IsActive": true,
"Latitude": "25.231273", "Latitude": "25.231273",
"Longitude": "55.320942", "Longitude": "55.320942",
"MainProjectID": 2, "MainProjectID": 2,
"ProjectOutSA": true, "ProjectOutSA": true,
"UsingInDoctorApp": true "UsingInDoctorApp": true
}, },
{ {
"Desciption": "SZR Center", "Desciption": "SZR Center",
"DesciptionN": null, "DesciptionN": null,
"ID": 3, "ID": 3,
"LegalName": "Dr. Sulaiman Al Habib Hospital SZR - LLC ", "LegalName": "Dr. Sulaiman Al Habib Hospital SZR - LLC ",
"LegalNameN": "مستشفى الدكتور سليمان الحبيب طريق الشيخ زايد", "LegalNameN": "مستشفى الدكتور سليمان الحبيب طريق الشيخ زايد",
"Name": "SZR Medical Center", "Name": "SZR Medical Center",
"NameN": null, "NameN": null,
"PhoneNumber": "+97144297777", "PhoneNumber": "+97144297777",
"SetupID": "505005", "SetupID": "505005",
"DistanceInKilometers": 0, "DistanceInKilometers": 0,
"IsActive": true, "IsActive": true,
"Latitude": "25.154501", "Latitude": "25.154501",
"Longitude": "55.226000", "Longitude": "55.226000",
"MainProjectID": 3, "MainProjectID": 3,
"ProjectOutSA": true, "ProjectOutSA": true,
"UsingInDoctorApp": true "UsingInDoctorApp": true
}, },
{ {
"Desciption": "Home Health Care (HHC)", "Desciption": "Home Health Care (HHC)",
"DesciptionN": null, "DesciptionN": null,
"ID": 95, "ID": 95,
"LegalName": "", "LegalName": "",
"LegalNameN": "", "LegalNameN": "",
"Name": "Home Health Care (HHC)", "Name": "Home Health Care (HHC)",
"NameN": null, "NameN": null,
"PhoneNumber": "+966114622224", "PhoneNumber": "+966114622224",
"SetupID": "91877 ", "SetupID": "91877 ",
"DistanceInKilometers": 0, "DistanceInKilometers": 0,
"IsActive": false, "IsActive": false,
"Latitude": "24.704242", "Latitude": "24.704242",
"Longitude": "46.675823", "Longitude": "46.675823",
"MainProjectID": 12, "MainProjectID": 12,
"ProjectOutSA": false, "ProjectOutSA": false,
"UsingInDoctorApp": true "UsingInDoctorApp": true
}, },
{ {
"Desciption": "Olaya Hospital", "Desciption": "Olaya Hospital",
"DesciptionN": null, "DesciptionN": null,
"ID": 12, "ID": 12,
"LegalName": "from Sehat Al Olaya Medical Complex Company", "LegalName": "from Sehat Al Olaya Medical Complex Company",
"LegalNameN": "شركة مجمع صحة العليا الطبي ", "LegalNameN": "شركة مجمع صحة العليا الطبي ",
"Name": "Olaya Hospital", "Name": "Olaya Hospital",
"NameN": null, "NameN": null,
"PhoneNumber": "+966114622224", "PhoneNumber": "+966114622224",
"SetupID": "91877 ", "SetupID": "91877 ",
"DistanceInKilometers": 0, "DistanceInKilometers": 0,
"IsActive": true, "IsActive": true,
"Latitude": "24.704242", "Latitude": "24.704242",
"Longitude": "46.675823", "Longitude": "46.675823",
"MainProjectID": 12, "MainProjectID": 12,
"ProjectOutSA": false, "ProjectOutSA": false,
"UsingInDoctorApp": true "UsingInDoctorApp": true
}, },
{ {
"Desciption": "Ajaji Dental Clinic (AMS)", "Desciption": "Ajaji Dental Clinic (AMS)",
"DesciptionN": null, "DesciptionN": null,
"ID": 99, "ID": 99,
"LegalName": "from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company", "LegalName":
"LegalNameN": "شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان", "from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company",
"Name": "Ajaji Dental Clinic (AMS)", "LegalNameN":
"NameN": null, "شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان",
"PhoneNumber": "+966115259999", "Name": "Ajaji Dental Clinic (AMS)",
"SetupID": "010266", "NameN": null,
"DistanceInKilometers": 0, "PhoneNumber": "+966115259999",
"IsActive": false, "SetupID": "010266",
"Latitude": "24.722136", "DistanceInKilometers": 0,
"Longitude": "46.774303", "IsActive": false,
"MainProjectID": 15, "Latitude": "24.722136",
"ProjectOutSA": false, "Longitude": "46.774303",
"UsingInDoctorApp": true "MainProjectID": 15,
}, "ProjectOutSA": false,
{ "UsingInDoctorApp": true
"Desciption": "Ajaji Dental Clinic (AMS)", },
"DesciptionN": null, {
"ID": 100, "Desciption": "Ajaji Dental Clinic (AMS)",
"LegalName": "from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company", "DesciptionN": null,
"LegalNameN": "شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان", "ID": 100,
"Name": "Ajaji Dental Clinic (AMS) Malaz", "LegalName":
"NameN": null, "from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company",
"PhoneNumber": "+966115259999", "LegalNameN":
"SetupID": "010266", "شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان",
"DistanceInKilometers": 0, "Name": "Ajaji Dental Clinic (AMS) Malaz",
"IsActive": false, "NameN": null,
"Latitude": "24.722136", "PhoneNumber": "+966115259999",
"Longitude": "46.774303", "SetupID": "010266",
"MainProjectID": 15, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": false,
"UsingInDoctorApp": true "Latitude": "24.722136",
}, "Longitude": "46.774303",
{ "MainProjectID": 15,
"Desciption": "Arryan Hospital", "ProjectOutSA": false,
"DesciptionN": null, "UsingInDoctorApp": true
"ID": 15, },
"LegalName": "Al Rayan Hospital for Healthcare Company ", {
"LegalNameN": "شركة مستشفى الريان للرعاية الطبية", "Desciption": "Arryan Hospital",
"Name": "Arryan Hospital", "DesciptionN": null,
"NameN": null, "ID": 15,
"PhoneNumber": "+966114909999", "LegalName": "Al Rayan Hospital for Healthcare Company ",
"SetupID": "010266", "LegalNameN": "شركة مستشفى الريان للرعاية الطبية",
"DistanceInKilometers": 0, "Name": "Arryan Hospital",
"IsActive": true, "NameN": null,
"Latitude": "24.722136", "PhoneNumber": "+966114909999",
"Longitude": "46.774303", "SetupID": "010266",
"MainProjectID": 15, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": true,
"UsingInDoctorApp": true "Latitude": "24.722136",
}, "Longitude": "46.774303",
{ "MainProjectID": 15,
"Desciption": "MD Lab", "ProjectOutSA": false,
"DesciptionN": null, "UsingInDoctorApp": true
"ID": 150, },
"LegalName": "", {
"LegalNameN": "", "Desciption": "MD Lab",
"Name": "MD Lab", "DesciptionN": null,
"NameN": null, "ID": 150,
"PhoneNumber": "+966114774700", "LegalName": "",
"SetupID": "010266", "LegalNameN": "",
"DistanceInKilometers": 0, "Name": "MD Lab",
"IsActive": false, "NameN": null,
"Latitude": "24.722136", "PhoneNumber": "+966114774700",
"Longitude": "46.774303", "SetupID": "010266",
"MainProjectID": 15, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": false,
"UsingInDoctorApp": true "Latitude": "24.722136",
}, "Longitude": "46.774303",
{ "MainProjectID": 15,
"Desciption": "Takhassusi Hospital", "ProjectOutSA": false,
"DesciptionN": null, "UsingInDoctorApp": true
"ID": 16, },
"LegalName": "Western Specialist Hospital for Medical Care", {
"LegalNameN": "شركة مستشفى الغرب التخصصي للرعاية الطبية ", "Desciption": "Takhassusi Hospital",
"Name": "Takhassusi Hospital", "DesciptionN": null,
"NameN": null, "ID": 16,
"PhoneNumber": "+966112833333", "LegalName": "Western Specialist Hospital for Medical Care",
"SetupID": "102000", "LegalNameN": "شركة مستشفى الغرب التخصصي للرعاية الطبية ",
"DistanceInKilometers": 0, "Name": "Takhassusi Hospital",
"IsActive": true, "NameN": null,
"Latitude": "24.719364", "PhoneNumber": "+966112833333",
"Longitude": "46.657567", "SetupID": "102000",
"MainProjectID": 16, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": true,
"UsingInDoctorApp": true "Latitude": "24.719364",
}, "Longitude": "46.657567",
{ "MainProjectID": 16,
"Desciption": "Suwaidi Hospital", "ProjectOutSA": false,
"DesciptionN": null, "UsingInDoctorApp": true
"ID": 17, },
"LegalName": "Sehat Al Suwaidi Medical Company", {
"LegalNameN": "شركة صحة السويدي الطبية", "Desciption": "Suwaidi Hospital",
"Name": "Suwaidi Hospital", "DesciptionN": null,
"NameN": null, "ID": 17,
"PhoneNumber": "+966114754444", "LegalName": "Sehat Al Suwaidi Medical Company",
"SetupID": "010266", "LegalNameN": "شركة صحة السويدي الطبية",
"DistanceInKilometers": 0, "Name": "Suwaidi Hospital",
"IsActive": true, "NameN": null,
"Latitude": "24.567525", "PhoneNumber": "+966114754444",
"Longitude": " 46.641019", "SetupID": "010266",
"MainProjectID": 17, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": true,
"UsingInDoctorApp": true "Latitude": "24.567525",
}, "Longitude": " 46.641019",
{ "MainProjectID": 17,
"Desciption": "Al Qassim Hospital\r\n", "ProjectOutSA": false,
"DesciptionN": null, "UsingInDoctorApp": true
"ID": 21, },
"LegalName": "Buraidah Al Takhassusi Hospital for Healthcare Company", {
"LegalNameN": "شركة مستشفى بريدة التخصصي للرعاية الطبية ", "Desciption": "Al Qassim Hospital\r\n",
"Name": "Al Qassim Hospital", "DesciptionN": null,
"NameN": null, "ID": 21,
"PhoneNumber": "+966163166666", "LegalName": "Buraidah Al Takhassusi Hospital for Healthcare Company",
"SetupID": "051431", "LegalNameN": "شركة مستشفى بريدة التخصصي للرعاية الطبية ",
"DistanceInKilometers": 0, "Name": "Al Qassim Hospital",
"IsActive": true, "NameN": null,
"Latitude": "26.360724", "PhoneNumber": "+966163166666",
"Longitude": "43.945774", "SetupID": "051431",
"MainProjectID": 21, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": true,
"UsingInDoctorApp": true "Latitude": "26.360724",
}, "Longitude": "43.945774",
{ "MainProjectID": 21,
"Desciption": "Khobar Hospital", "ProjectOutSA": false,
"DesciptionN": null, "UsingInDoctorApp": true
"ID": 60, },
"LegalName": "Khobar Hospital", {
"LegalNameN": "مستشفى الخبر", "Desciption": "Khobar Hospital",
"Name": "Khobar Hospital", "DesciptionN": null,
"NameN": null, "ID": 60,
"PhoneNumber": "+966138711111", "LegalName": "Khobar Hospital",
"SetupID": "034423", "LegalNameN": "مستشفى الخبر",
"DistanceInKilometers": 0, "Name": "Khobar Hospital",
"IsActive": true, "NameN": null,
"Latitude": "26.3107804", "PhoneNumber": "+966138711111",
"Longitude": "50.2108347", "SetupID": "034423",
"MainProjectID": 60, "DistanceInKilometers": 0,
"ProjectOutSA": false, "IsActive": true,
"UsingInDoctorApp": true "Latitude": "26.3107804",
} "Longitude": "50.2108347",
]; "MainProjectID": 60,
"ProjectOutSA": false,
"UsingInDoctorApp": true
}
];

@ -1,26 +1,17 @@
const PATIENT_TYPE = const [
{"text": "outPatiant", "val": "0"},
{"text": "InPatiant", "val": "1"},
{"text": "Discharge", "val": "2"},
{"text": "Referrd", "val": "3"},
{"text": "Referral Discharge", "val": "4"},
{"text": "Tomorrow Patient", "val": "5"},
{"text": "Referral", "val": "6"},
];
const PATIENT_TYPE = const [ const LOCATIONS = const [
{"text": "outPatiant", "val": "0"}, {"text": "In Sudia Arabia", "val": "1"},
{"text": "InPatiant", "val": "1"}, {"text": "Out Sudia Arabia", "val": "2"},
{"text": "Discharge", "val": "2"}, ];
{"text": "Referrd", "val": "3"},
{"text": "Referral Discharge", "val": "4"},
{"text": "Tomorrow Patient", "val": "5"},
{"text": "Referral", "val": "6"},
];
const LOCATIONS = const[
{"text": "In Sudia Arabia", "val": "1"},
{"text": "Out Sudia Arabia", "val": "2"},
];
enum vitalSignDetails { enum vitalSignDetails {
bodyMeasurements, bodyMeasurements,
@ -30,4 +21,4 @@ enum vitalSignDetails {
bloodPressure, bloodPressure,
oxygenation, oxygenation,
painScale painScale
} }

@ -1,3 +1,5 @@
import 'package:flutter/cupertino.dart';
class ReferToDoctorRequest { class ReferToDoctorRequest {
/* /*
@ -64,27 +66,27 @@ class ReferToDoctorRequest {
*/ */
ReferToDoctorRequest( ReferToDoctorRequest(
{this.projectID, {@required this.projectID,
this.admissionNo, @required this.admissionNo,
this.roomID = "ISO-6", @required this.roomID ,
this.referralClinic, @required this.referralClinic,
this.referralDoctor , @required this.referralDoctor ,
this.createdBy, @required this.createdBy,
this.editedBy , @required this.editedBy ,
this.patientID, @required this.patientID,
this.patientTypeID = 1, @required this.patientTypeID,
this.referringClinic, @required this.referringClinic,
this.referringDoctor, @required this.referringDoctor,
this.referringDoctorRemarks, @required this.referringDoctorRemarks,
this.priority , @required this.priority ,
this.frequency, @required this.frequency,
this.extension, @required this.extension,
this.languageID = 2, this.languageID = 2,
this.stamp = "2020-06-03T11:26:42.358Z", this.stamp = "2020-06-03T11:26:42.358Z",
this.iPAdress = "11.11.11.11", this.iPAdress = "11.11.11.11",
this.versionID = 1.2, this.versionID = 1.2,
this.channel = 9, this.channel = 9,
this.tokenID, @required this.tokenID,
this.sessionID = "JBXRsDl37L", this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true, this.isLoginForDoctorApp = true,
this.patientOutSA = false}); this.patientOutSA = false});

@ -31,4 +31,7 @@ class DoctorApp {
static const IconData message_icon_active = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData message_icon_active = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData scdedule_icon_active = IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData scdedule_icon_active = IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData schedule_icon = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData schedule_icon = IconData(0xe809, 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);
} }

@ -22,19 +22,19 @@ class AuthProvider with ChangeNotifier {
await BaseAppClient.post(LOGIN_URL, await BaseAppClient.post(LOGIN_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: { }, body: {
"UserID": userInfo.UserID, "UserID": userInfo.UserID,
"Password": userInfo.Password, "Password": userInfo.Password,
"ProjectID": userInfo.ProjectID, "ProjectID": userInfo.ProjectID,
"LanguageID": userInfo.LanguageID, "LanguageID": userInfo.LanguageID,
"IPAdress": userInfo.IPAdress, "IPAdress": userInfo.IPAdress,
"VersionID": userInfo.VersionID, "VersionID": userInfo.VersionID,
"Channel": userInfo.Channel, "Channel": userInfo.Channel,
"SessionID": userInfo.SessionID "SessionID": userInfo.SessionID
}); });
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
@ -49,10 +49,10 @@ class AuthProvider with ChangeNotifier {
await BaseAppClient.post(INSERT_DEVICE_IMEI, await BaseAppClient.post(INSERT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: imei); }, body: imei);
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
@ -65,10 +65,10 @@ class AuthProvider with ChangeNotifier {
dynamic localRes; dynamic localRes;
await BaseAppClient.post(SELECT_DEVICE_IMEI, await BaseAppClient.post(SELECT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: imei); }, body: imei);
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
@ -82,10 +82,10 @@ class AuthProvider with ChangeNotifier {
var localRes; var localRes;
await BaseAppClient.post(SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE, await BaseAppClient.post(SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: activationCodeModel); }, body: activationCodeModel);
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
@ -98,10 +98,10 @@ class AuthProvider with ChangeNotifier {
dynamic localRes; dynamic localRes;
await BaseAppClient.post(MEMBER_CHECK_ACTIVATION_CODE_NEW, await BaseAppClient.post(MEMBER_CHECK_ACTIVATION_CODE_NEW,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: activationCodeModel); }, body: activationCodeModel);
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);
@ -109,8 +109,8 @@ class AuthProvider with ChangeNotifier {
} }
} }
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:17/5/2020 *@Date:17/5/2020
*@param: docInfo *@param: docInfo
*@return:Future<Map> *@return:Future<Map>
@ -121,10 +121,10 @@ class AuthProvider with ChangeNotifier {
dynamic localRes; dynamic localRes;
await BaseAppClient.post(GET_DOC_PROFILES, await BaseAppClient.post(GET_DOC_PROFILES,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: docInfo); }, body: docInfo);
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
print(error); print(error);

@ -25,7 +25,7 @@ class HospitalProvider with ChangeNotifier {
throw error; throw error;
}, },
body: info); body: info);
return Future.value(localRes); return Future.value(localRes);
} }
} }

@ -1,39 +1,57 @@
import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'dart:convert';
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:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart'; import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart'; import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import '.../../../util/dr_app_shared_pref.dart';
class MedicineProvider with ChangeNotifier { class MedicineProvider with ChangeNotifier {
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
var pharmacyItemsList = []; var pharmacyItemsList = [];
var pharmaciesList = []; var pharmaciesList = [];
bool isFinished = true; bool isFinished = true;
bool hasError = false; bool hasError = false;
String errorMsg = ''; String errorMsg = '';
PharmaciesItemsRequestModel _itemsRequestModel = PharmaciesItemsRequestModel _itemsRequestModel =PharmaciesItemsRequestModel();
PharmaciesItemsRequestModel();
PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel(); PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel();
Future<String> getMedicineItem(String itemName) async { Future<String> getMedicineItem(String itemName) async {
resetDefaultValues(); resetDefaultValues();
try { try {
_itemsRequestModel.pHRItemName = itemName; if (await Helpers.checkConnection()) {
await BaseAppClient.post(PHARMACY_ITEMS_URL, _itemsRequestModel.pHRItemName = itemName;
onSuccess: (dynamic response, int statusCode) {
pharmacyItemsList = response['ListPharmcy_Region']; final response = await AppClient.post(PHARMACY_ITEMS_URL,
hasError = false; body: json.encode(_itemsRequestModel.toJson()));
final int statusCode = response.statusCode;
isFinished = true; isFinished = true;
errorMsg = "Done"; if (statusCode < 200 || statusCode >= 400 || json == null) {
}, onFailure: (String error, int statusCode) { isFinished = true;
hasError = true;
errorMsg = 'Error While Fetching data';
} else {
var parsed = json.decode(response.body.toString());
if (parsed['MessageStatus'] == 1) {
pharmacyItemsList = parsed['ListPharmcy_Region'];
hasError = false;
isFinished = true;
errorMsg = "Done";
} else {
hasError = true;
errorMsg = parsed['ErrorMessage'] ?? parsed['ErrorEndUserMessage'];
}
}
} else {
isFinished = true; isFinished = true;
hasError = true; hasError = true;
errorMsg = error; errorMsg = 'Please Check The Internet Connection';
}, body: _itemsRequestModel.toJson()); }
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
throw error; throw error;
@ -43,20 +61,37 @@ class MedicineProvider with ChangeNotifier {
} }
Future<String> getPharmaciesList(int itemId) async { Future<String> getPharmaciesList(int itemId) async {
String token = await sharedPref.getString(TOKEN);
resetDefaultValues(); resetDefaultValues();
try { try {
_listRequestModel.itemID = itemId; if (await Helpers.checkConnection()) {
await BaseAppClient.post(PHARMACY_LIST_URL, _listRequestModel.itemID = itemId;
onSuccess: (dynamic response, int statusCode) { _listRequestModel.tokenID = token;
pharmaciesList = response['PharmList']; final response = await AppClient.post(PHARMACY_LIST_URL,
hasError = false; body: json.encode(_listRequestModel.toJson()));
final int statusCode = response.statusCode;
isFinished = true; isFinished = true;
errorMsg = "Done"; if (statusCode < 200 || statusCode >= 400 || json == null) {
}, onFailure: (String error, int statusCode) { isFinished = true;
hasError = true;
errorMsg = 'Error While Fetching data';
} else {
var parsed = json.decode(response.body.toString());
if (parsed['MessageStatus'] == 1) {
pharmaciesList = parsed['PharmList'];
hasError = false;
isFinished = true;
errorMsg = "Done";
} else {
hasError = true;
errorMsg = parsed['ErrorMessage'] ?? parsed['ErrorEndUserMessage'];
}
}
} else {
isFinished = true; isFinished = true;
hasError = true; hasError = true;
errorMsg = error; errorMsg = 'Please Check The Internet Connection';
}, body: _listRequestModel.toJson()); }
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
throw error; throw error;

@ -1,3 +1,6 @@
import 'dart:convert';
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/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
@ -13,6 +16,7 @@ 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/patient/refer_to_doctor_request.dart';
import 'package:doctor_app_flutter/models/prescription_report.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 '../config/config.dart'; import '../config/config.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;
@ -53,16 +58,16 @@ class PatientsProvider with ChangeNotifier {
var referalFrequancyList = []; var referalFrequancyList = [];
DoctorsByClinicIdRequest _doctorsByClinicIdRequest = DoctorsByClinicIdRequest _doctorsByClinicIdRequest =
DoctorsByClinicIdRequest(); DoctorsByClinicIdRequest();
STPReferralFrequencyRequest _referralFrequencyRequest = STPReferralFrequencyRequest _referralFrequencyRequest =
STPReferralFrequencyRequest(); STPReferralFrequencyRequest();
ClinicByProjectIdRequest _clinicByProjectIdRequest = ClinicByProjectIdRequest _clinicByProjectIdRequest =
ClinicByProjectIdRequest(); ClinicByProjectIdRequest();
ReferToDoctorRequest _referToDoctorRequest = ReferToDoctorRequest(); ReferToDoctorRequest _referToDoctorRequest = ReferToDoctorRequest();
PatiantInformtion _selectedPatient; PatiantInformtion _selectedPatient;
Future<dynamic> getPatientList(PatientModel patient, patientType) async { Future<dynamic> getPatientList(PatientModel patient, patientType) async {
int val = int.parse(patientType); int val = int.parse(patientType);
try { try {
@ -72,28 +77,28 @@ class PatientsProvider with ChangeNotifier {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error; throw error;
}, body: { }, body: {
"ProjectID": patient.ProjectID, "ProjectID": patient.ProjectID,
"ClinicID": patient.ClinicID, "ClinicID": patient.ClinicID,
"DoctorID": patient.DoctorID, "DoctorID": patient.DoctorID,
"FirstName": patient.FirstName, "FirstName": patient.FirstName,
"MiddleName": patient.MiddleName, "MiddleName": patient.MiddleName,
"LastName": patient.LastName, "LastName": patient.LastName,
"PatientMobileNumber": patient.PatientMobileNumber, "PatientMobileNumber": patient.PatientMobileNumber,
"PatientIdentificationID": patient.PatientIdentificationID, "PatientIdentificationID": patient.PatientIdentificationID,
"PatientID": patient.PatientID, "PatientID": patient.PatientID,
"From": patient.From, "From": patient.From,
"To": patient.To, "To": patient.To,
"LanguageID": patient.LanguageID, "LanguageID": patient.LanguageID,
"stamp": patient.stamp, "stamp": patient.stamp,
"IPAdress": patient.IPAdress, "IPAdress": patient.IPAdress,
"VersionID": patient.VersionID, "VersionID": patient.VersionID,
"Channel": patient.Channel, "Channel": patient.Channel,
"TokenID": patient.TokenID, "TokenID": patient.TokenID,
"SessionID": patient.SessionID, "SessionID": patient.SessionID,
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp, "IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"PatientOutSA": patient.PatientOutSA "PatientOutSA": patient.PatientOutSA
}); });
return Future.value(localRes); return Future.value(localRes);
} catch (error) { } catch (error) {
@ -122,36 +127,36 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(GET_PATIENT_VITAL_SIGN, await BaseAppClient.post(GET_PATIENT_VITAL_SIGN,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
patientVitalSignList = []; patientVitalSignList = [];
response['List_DoctorPatientVitalSign'].forEach((v) { response['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v)); patientVitalSignList.add(new VitalSignResModel.fromJson(v));
}); });
if (patientVitalSignList.length > 0) { if (patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = []; List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = patientVitalSignList; patientVitalSignOrderdSubListTemp = patientVitalSignList;
patientVitalSignOrderdSubListTemp patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) { .sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch - return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch; a.vitalSignDate.microsecondsSinceEpoch;
}); });
patientVitalSignOrderdSubList.clear(); patientVitalSignOrderdSubList.clear();
int length = patientVitalSignOrderdSubListTemp.length >= 20 int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20 ? 20
: patientVitalSignOrderdSubListTemp.length; : patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) { for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]); .add(patientVitalSignOrderdSubListTemp[x]);
} }
} }
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -172,18 +177,18 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(GET_PATIENT_LAB_OREDERS, await BaseAppClient.post(GET_PATIENT_LAB_OREDERS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
patientLabResultOrdersList = []; patientLabResultOrdersList = [];
response['List_GetLabOreders'].forEach((v) { response['List_GetLabOreders'].forEach((v) {
patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v)); patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v));
}); });
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -201,18 +206,18 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(GET_PRESCRIPTION, await BaseAppClient.post(GET_PRESCRIPTION,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
patientPrescriptionsList = []; patientPrescriptionsList = [];
response['PatientPrescriptionList'].forEach((v) { response['PatientPrescriptionList'].forEach((v) {
patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v)); patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v));
}); });
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -233,13 +238,13 @@ class PatientsProvider with ChangeNotifier {
await BaseAppClient.post( await BaseAppClient.post(
'DoctorApplication.svc/REST/GetPrescriptionReportForInPatient', 'DoctorApplication.svc/REST/GetPrescriptionReportForInPatient',
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
response['List_PrescriptionReportForInPatient'].forEach((v) { response['List_PrescriptionReportForInPatient'].forEach((v) {
prescriptionReportForInPatientList prescriptionReportForInPatientList
.add(PrescriptionReportForInPatient.fromJson(v)); .add(PrescriptionReportForInPatient.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;
@ -258,16 +263,16 @@ class PatientsProvider with ChangeNotifier {
notifyListeners(); notifyListeners();
await BaseAppClient.post('Patients.svc/REST/GetPrescriptionReport', await BaseAppClient.post('Patients.svc/REST/GetPrescriptionReport',
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
response['ListPRM'].forEach((v) { response['ListPRM'].forEach((v) {
prescriptionReport.add(PrescriptionReport.fromJson(v)); prescriptionReport.add(PrescriptionReport.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;
}, body: prescriptionReqModel); }, body: prescriptionReqModel);
notifyListeners(); notifyListeners();
} }
@ -298,18 +303,18 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(GET_RADIOLOGY, await BaseAppClient.post(GET_RADIOLOGY,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
patientRadiologyList = []; patientRadiologyList = [];
response['List_GetRadOreders'].forEach((v) { response['List_GetRadOreders'].forEach((v) {
patientRadiologyList.add(new RadiologyResModel.fromJson(v)); patientRadiologyList.add(new RadiologyResModel.fromJson(v));
}); });
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -327,16 +332,16 @@ class PatientsProvider with ChangeNotifier {
requestLabResult.patientTypeID = labOrdersResModel.patientType; requestLabResult.patientTypeID = labOrdersResModel.patientType;
await BaseAppClient.post('DoctorApplication.svc/REST/GetPatientLabResults', await BaseAppClient.post('DoctorApplication.svc/REST/GetPatientLabResults',
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
isError = false; isError = false;
isLoading = false; isLoading = false;
response['List_GetLabNormal'].forEach((v) { response['List_GetLabNormal'].forEach((v) {
labResultList.add(new LabResult.fromJson(v)); labResultList.add(new LabResult.fromJson(v));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isError = true; isError = true;
isLoading = false; isLoading = false;
this.error = error; this.error = error;
}, body: requestLabResult.toJson()); }, body: requestLabResult.toJson());
notifyListeners(); notifyListeners();
} }
@ -345,15 +350,15 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(PATIENT_INSURANCE_APPROVALS_URL, await BaseAppClient.post(PATIENT_INSURANCE_APPROVALS_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
insuranceApporvalsList = response['List_ApprovalMain_InPatient']; insuranceApporvalsList = response['List_ApprovalMain_InPatient'];
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -369,15 +374,15 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(PATIENT_PROGRESS_NOTE_URL, await BaseAppClient.post(PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
patientProgressNoteList = response['List_GetPregressNoteForInPatient']; patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: patient); }, body: patient);
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -394,15 +399,15 @@ class PatientsProvider with ChangeNotifier {
_doctorsByClinicIdRequest.clinicID = clinicId; _doctorsByClinicIdRequest.clinicID = clinicId;
await BaseAppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL, await BaseAppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
doctorsList = response['List_Doctors_All']; doctorsList = response['List_Doctors_All'];
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: _doctorsByClinicIdRequest.toJson()); }, body: _doctorsByClinicIdRequest.toJson());
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -411,7 +416,7 @@ class PatientsProvider with ChangeNotifier {
List getDoctorNameList() { List getDoctorNameList() {
var doctorNamelist = var doctorNamelist =
doctorsList.map((value) => value['DoctorName'].toString()).toList(); doctorsList.map((value) => value['DoctorName'].toString()).toList();
return doctorNamelist; return doctorNamelist;
} }
@ -424,15 +429,15 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL, await BaseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
clinicsList = response['List_Clinic_All']; clinicsList = response['List_Clinic_All'];
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: _clinicByProjectIdRequest.toJson()); }, body: _clinicByProjectIdRequest.toJson());
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -455,15 +460,15 @@ class PatientsProvider with ChangeNotifier {
try { try {
await BaseAppClient.post(PATIENT_GET_LIST_REFERAL_URL, await BaseAppClient.post(PATIENT_GET_LIST_REFERAL_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
referalFrequancyList = response['list_STPReferralFrequency']; referalFrequancyList = response['list_STPReferralFrequency'];
isLoading = false; isLoading = false;
isError = false; isError = false;
this.error = ''; this.error = '';
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; this.error = error;
}, body: _referralFrequencyRequest.toJson()); }, body: _referralFrequencyRequest.toJson());
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);
@ -481,48 +486,69 @@ class PatientsProvider with ChangeNotifier {
*@Date:3/6/2020 *@Date:3/6/2020
*@desc: referToDoctor *@desc: referToDoctor
*/ */
referToDoctor( referToDoctor(context,
int selectedDoctorID, {String selectedDoctorID,
int selectedClinicID, String selectedClinicID,
String selectedReferralFrequancyID, int admissionNo,
int admissionNo, String extension,
String extension, String priority,
String doctorRemark) async { String frequency,
String token = await sharedPref.getString(TOKEN); String referringDoctorRemarks,
int projectID = await sharedPref.getInt(PROJECT_ID); int patientID,
Map profile = await sharedPref.getObj(DOCTOR_PROFILE); int patientTypeID,
DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile); String roomID,
int doctorID = doctorProfile.doctorID; int projectID}) async {
int clinicId = doctorProfile.clinicID;
setBasicData(); setBasicData();
try { try {
// _referToDoctorRequest.tokenID = token; if (await Helpers.checkConnection()) {
// _referToDoctorRequest.admissionNo = admissionNo; String token = await sharedPref.getString(TOKEN);
// _referToDoctorRequest.projectID = projectID; Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
// _referToDoctorRequest.tokenID = token; DoctorProfileModel doctorProfile =
// _referToDoctorRequest.extension = extension; new DoctorProfileModel.fromJson(profile);
// _referToDoctorRequest.frequency = selectedReferralFrequancyID; int doctorID = doctorProfile.doctorID;
// _referToDoctorRequest.patientID = int clinicId = doctorProfile.clinicID;
// _referToDoctorRequest.priority = _referToDoctorRequest = ReferToDoctorRequest(
// _referToDoctorRequest.referralClinic = projectID: projectID,
// _referToDoctorRequest.referralDoctor = admissionNo: admissionNo,
// _referToDoctorRequest.referringDoctorRemarks = roomID: roomID,
// _referToDoctorRequest.roomID = referralClinic: selectedClinicID.toString(),
// _referToDoctorRequest.referringClinic = referralDoctor: selectedDoctorID.toString(),
// _referToDoctorRequest.referringDoctor = createdBy: doctorID,
editedBy: doctorID,
await BaseAppClient.post(PATIENT_REFER_TO_DOCTOR_URL, patientID: patientID,
onSuccess: (dynamic response, int statusCode) { patientTypeID: patientTypeID,
patientProgressNoteList = response['List_GetPregressNoteForInPatient']; referringClinic: clinicId,
referringDoctor: doctorID,
referringDoctorRemarks: referringDoctorRemarks,
priority: priority,
frequency: frequency,
extension: extension,
tokenID: token);
final response = await AppClient.post(PATIENT_REFER_TO_DOCTOR_URL,
body: json.encode(_referToDoctorRequest));
final int statusCode = response.statusCode;
isLoading = false; isLoading = false;
isError = false;
this.error = ''; if (statusCode < 200 || statusCode >= 400 || json == null) {
}, onFailure: (String error, int statusCode) { isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
print('Done : \n $res');
Navigator.pop(context);
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
}
}
} else {
isLoading = false; isLoading = false;
isError = true; isError = true;
this.error = error; error = 'Please Check The Internet Connection';
}, body: _referralFrequencyRequest.toJson()); }
notifyListeners(); notifyListeners();
} catch (err) { } catch (err) {
handelCatchErrorCase(err); handelCatchErrorCase(err);

@ -24,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;
@ -73,9 +73,9 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
height: 7, height: 7,
), ),
AppText( AppText(
'scan Qr code to retrieve patient profile', 'scan Qr code to retrieve patient profile',
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
textAlign: TextAlign.center textAlign: TextAlign.center
), ),
SizedBox( SizedBox(
@ -124,15 +124,15 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/// var result = await BarcodeScanner.scan(); /// var result = await BarcodeScanner.scan();
/// int patientID = get from qr result /// int patientID = get from qr result
var result = await BarcodeScanner.scan(); var result = await BarcodeScanner.scan();
// if (result.rawContent == "") { // if (result.rawContent == "") {
List<String> listOfParams = result.rawContent.split(','); List<String> listOfParams = result.rawContent.split(',');
String patientType = "1"; String patientType = "1";
setState(() { setState(() {
isLoading = true; isLoading = true;
isError = false; isError = false;
patientList = []; patientList = [];
}); });
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
// Map profile = await sharedPref.getObj(DOCTOR_PROFILE); // Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
// DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile); // DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile);
// patient.PatientID = 8808; // patient.PatientID = 8808;
@ -141,64 +141,64 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
// patient.setClinicID = doctorProfile.clinicID; // patient.setClinicID = doctorProfile.clinicID;
// patient.setProjectID = doctorProfile.projectID; // patient.setProjectID = doctorProfile.projectID;
// Provider.of<PatientsProvider>(context, listen: false); // Provider.of<PatientsProvider>(context, listen: false);
patient.PatientID = 8808; patient.PatientID = 8808;
patient.TokenID = token; patient.TokenID = token;
Provider.of<PatientsProvider>(context, listen: false) Provider.of<PatientsProvider>(context, listen: false)
.getPatientList(patient, "1") .getPatientList(patient, "1")
.then((response) { .then((response) {
if (response['MessageStatus'] == 1) { if (response['MessageStatus'] == 1) {
switch (patientType) { switch (patientType) {
case "0": case "0":
if (response['List_MyOutPatient'] != null) { if (response['List_MyOutPatient'] != null) {
setState(() { setState(() {
patientList = ModelResponse.fromJson(response['List_MyOutPatient']).list; patientList = ModelResponse.fromJson(response['List_MyOutPatient']).list;
isLoading = false; isLoading = false;
}); });
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: { Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0], "patient": patientList[0],
}); });
} else { } else {
setState(() { setState(() {
isError = true; isError = true;
isLoading = false; isLoading = false;
}); });
DrAppToastMsg.showErrorToast('No patient'); DrAppToastMsg.showErrorToast('No patient');
} }
break;
case "1":
if (response['List_MyInPatient'] != null) {
setState(() {
patientList = ModelResponse.fromJson(response['List_MyInPatient']).list;
isLoading = false;
error = "";
});
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0],
});
} else {
setState(() {
isError = true;
isLoading = false;
});
DrAppToastMsg.showErrorToast('No patient');
break; break;
case "1": }
if (response['List_MyInPatient'] != null) {
setState(() {
patientList = ModelResponse.fromJson(response['List_MyInPatient']).list;
isLoading = false;
error = "";
});
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0],
});
} else {
setState(() {
isError = true;
isLoading = false;
});
DrAppToastMsg.showErrorToast('No patient');
break;
}
}
} else {
setState(() {
isLoading = false;
isError = true;
});
DrAppToastMsg.showErrorToast(response['ErrorEndUserMessage'] ?? response['ErrorMessage']);
} }
}).catchError((error){ } else {
setState(() { setState(() {
isLoading = false; isLoading = false;
isError = true;
}); });
helpers.showErrorToast(error); DrAppToastMsg.showErrorToast(response['ErrorEndUserMessage'] ?? response['ErrorMessage']);
//DrAppToastMsg.showErrorToast(error);
}
}).catchError((error){
setState(() {
isLoading = false;
}); });
} helpers.showErrorToast(error);
// } //DrAppToastMsg.showErrorToast(error);
});
}
// }
} }

@ -41,10 +41,10 @@ class _LoginsreenState extends State<Loginsreen> {
}); });
} }
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:19/4/2020 *@Date:19/4/2020
*@param: isLoading *@param: isLoading
*@return: *@return:
*@desc: Change Isloading attribute in order to show or hide loader *@desc: Change Isloading attribute in order to show or hide loader
*/ */
@ -56,7 +56,7 @@ class _LoginsreenState extends State<Loginsreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.CONTEX = context;
getSharedPref(); getSharedPref();
return AppScaffold( return AppScaffold(
isLoading: _isLoading, isLoading: _isLoading,
@ -80,24 +80,24 @@ class _LoginsreenState extends State<Loginsreen> {
children: <Widget>[ children: <Widget>[
(platformImei == null) (platformImei == null)
? Column( ? Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AuthHeader(loginType.knownUser), AuthHeader(loginType.knownUser),
LoginForm( LoginForm(
changeLoadingStata: changeLoadingStata:
changeLoadingStata, changeLoadingStata,
), ),
], ],
) )
: Column( : Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AuthHeader(loginType.unknownUser), AuthHeader(loginType.unknownUser),
KnownUserLogin(), KnownUserLogin(),
], ],
), ),
])); ]));
} }
} }

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/providers/hospital_provider.dart';
import 'package:doctor_app_flutter/providers/referral_patient_provider.dart'; import 'package:doctor_app_flutter/providers/referral_patient_provider.dart';
import 'package:doctor_app_flutter/providers/referred_patient_provider.dart'; import 'package:doctor_app_flutter/providers/referred_patient_provider.dart';
import 'package:doctor_app_flutter/screens/QR_reader_screen.dart';
import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.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/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -26,7 +27,7 @@ class DashboardScreen extends StatefulWidget {
DashboardScreen({Key key, this.title}) : super(key: key); DashboardScreen({Key key, this.title}) : super(key: key);
final String title; final String title;
final String iconURL = 'assets/images/dashboard_icon/';
@override @override
_DashboardScreenState createState() => _DashboardScreenState(); _DashboardScreenState createState() => _DashboardScreenState();
} }
@ -42,21 +43,37 @@ class _DashboardScreenState extends State<DashboardScreen> {
child: Scaffold( child: Scaffold(
body: SingleChildScrollView( body: SingleChildScrollView(
child: SizedBox( child: SizedBox(
height: MediaQuery.of(context).size.height*1.09, height: MediaQuery.of(context).size.height * 1.09,
// height: MediaQuery.of(context).size.height * 0.2,
// width: SizeConfig.screenWidth * 0.9,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Expanded( Row(
flex: 1, mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Container( mainAxisSize: MainAxisSize.max,
margin: EdgeInsets.all(10), crossAxisAlignment: CrossAxisAlignment.start,
child: AppText( children: <Widget>[
TranslationBase.of(context).todayStatistics, Container(
fontWeight: FontWeight.bold, margin: EdgeInsets.only(left: 10, top: 10),
), child: AppText(
alignment: Alignment.centerLeft, TranslationBase.of(context).familyMedicine,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.5,
),
alignment: Alignment.centerLeft,
),
Container(
margin: EdgeInsets.only(left: 10, top: 10, right: 10),
child: Icon(
Icons.settings,
size: SizeConfig.textMultiplier * 2.5,
))
]),
Container(
margin: EdgeInsets.only(left: 10, top: 5),
child: AppText(
TranslationBase.of(context).todayStatistics,
fontWeight: FontWeight.bold,
), ),
alignment: Alignment.centerLeft,
), ),
Expanded( Expanded(
flex: 3, flex: 3,
@ -67,7 +84,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 2, flex: 2,
child: RoundedContainer( child: RoundedContainer(
child: CircularPercentIndicator( child: CircularPercentIndicator(
radius: 115.0, radius: 100,
animation: true, animation: true,
animationDuration: 1200, animationDuration: 1200,
lineWidth: 7.0, lineWidth: 7.0,
@ -80,7 +97,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
fontSize: SizeConfig.textMultiplier * 4), fontSize: SizeConfig.textMultiplier * 4),
AppText(TranslationBase.of(context).outPatients, AppText(TranslationBase.of(context).outPatients,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 1.2, fontSize: SizeConfig.textMultiplier * 1.1,
color: Colors.grey[800]), color: Colors.grey[800]),
], ],
), ),
@ -101,16 +118,17 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 1, flex: 1,
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.stretch, CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: DashboardItemTexts( child: DashboardItemTexts(
TranslationBase.of(context).arrived, TranslationBase.of(context).arrived,
"23", "23",
)), )),
Expanded( Expanded(
child: DashboardItemTexts( child: DashboardItemTexts(
TranslationBase.of(context).notArrived, TranslationBase.of(context)
.notArrived,
"23", "23",
), ),
), ),
@ -119,18 +137,17 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.stretch, CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: DashboardItemTexts( child: DashboardItemTexts(
TranslationBase.of(context).er, TranslationBase.of(context).er,
"23", "23",
)), )),
Expanded( Expanded(
child: DashboardItemTexts( child: DashboardItemTexts(
TranslationBase.of(context).walkIn,
TranslationBase.of(context).walkIn,
"23", "23",
)), )),
], ],
@ -149,7 +166,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'lab_results.svg',
"08", "08",
TranslationBase.of(context).labResult, TranslationBase.of(context).labResult,
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
@ -161,7 +178,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'radiology.svg',
"10", "10",
TranslationBase.of(context).radiology, TranslationBase.of(context).radiology,
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
@ -172,7 +189,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'referral.svg',
"05", "05",
TranslationBase.of(context).referral, TranslationBase.of(context).referral,
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
@ -191,17 +208,17 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'in_patient_white.svg',
"23", "23",
TranslationBase.of(context).inPatient, "In-Patient",
showBorder: true, showBorder: true,
backgroundColor: Colors.red[900], backgroundColor: Colors.red[900],
), iconColor: Colors.white),
), ),
Expanded( Expanded(
flex: 2, flex: 2,
child: new DashboardItemIconText( child: new DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'operations.svg',
"23", "23",
TranslationBase.of(context).operations, TranslationBase.of(context).operations,
showBorder: true, showBorder: true,
@ -224,13 +241,12 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
flex: 2, flex: 2,
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
flex: 2, flex: 2,
child: InkWell( child: InkWell(
child: DashboardItemIconText( child: DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'search_patient.svg',
"", "",
TranslationBase.of(context).searchPatient, TranslationBase.of(context).searchPatient,
showBorder: true, showBorder: true,
@ -238,7 +254,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black, valueFontColor: Colors.black,
titleFontColor: Colors.black, titleFontColor: Colors.black,
iconColor: Colors.black, iconColor: Colors.black,
titleFontSize: 16, titleFontSize: SizeConfig.textMultiplier * 2,
), ),
onTap: () { onTap: () {
Navigator.of(context).pushNamed(PATIENT_SEARCH); Navigator.of(context).pushNamed(PATIENT_SEARCH);
@ -260,7 +276,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'message_icon.svg',
"", "",
TranslationBase.of(context).doctorReply, TranslationBase.of(context).doctorReply,
showBorder: true, showBorder: true,
@ -268,7 +284,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black, valueFontColor: Colors.black,
titleFontColor: Colors.black, titleFontColor: Colors.black,
iconColor: Colors.black, iconColor: Colors.black,
titleFontSize: 16, titleFontSize: SizeConfig.textMultiplier * 2,
), ),
), ),
), ),
@ -284,7 +300,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 1, flex: 1,
child: InkWell( child: InkWell(
child: DashboardItemIconText( child: DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'search_patient.svg',
"", "",
"Search Medicine", "Search Medicine",
showBorder: true, showBorder: true,
@ -292,7 +308,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black, valueFontColor: Colors.black,
titleFontColor: Colors.black, titleFontColor: Colors.black,
iconColor: Colors.black, iconColor: Colors.black,
titleFontSize: 14, titleFontSize: SizeConfig.textMultiplier * 2,
), ),
onTap: () { onTap: () {
Navigator.push( Navigator.push(
@ -322,7 +338,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'referral.svg',
"", "",
"My Referral Patient", "My Referral Patient",
showBorder: true, showBorder: true,
@ -330,7 +346,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black, valueFontColor: Colors.black,
titleFontColor: Colors.black, titleFontColor: Colors.black,
iconColor: Colors.black, iconColor: Colors.black,
titleFontSize: 14, titleFontSize: SizeConfig.textMultiplier * 2,
), ),
), ),
), ),
@ -357,7 +373,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
}, },
child: DashboardItemIconText( child: DashboardItemIconText(
DoctorApp.home_icon, widget.iconURL + 'referral.svg',
"", "",
"My Referred Patient", "My Referred Patient",
showBorder: true, showBorder: true,
@ -365,11 +381,29 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black, valueFontColor: Colors.black,
titleFontColor: Colors.black, titleFontColor: Colors.black,
iconColor: Colors.black, iconColor: Colors.black,
titleFontSize: 14, titleFontSize: SizeConfig.textMultiplier * 2,
),
),
),
Expanded(
flex: 1,
child: InkWell(
onTap: () {
Navigator.of(context).pushNamed(QR_READER);
},
child: DashboardItemIconText(
widget.iconURL + 'qr-code.svg',
"",
"QR Reader",
showBorder: true,
backgroundColor: Colors.white,
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: SizeConfig.textMultiplier * 2,
), ),
), ),
), ),
Expanded(flex: 1, child: 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;
@ -15,8 +13,7 @@ class MyScheduleScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
scheduleProvider = Provider.of(context); scheduleProvider = Provider.of(context);
return AppScaffold( return Scaffold(
appBarTitle: TranslationBase.of(context).mySchedule,
body: scheduleProvider.isLoading body: scheduleProvider.isLoading
? DrAppCircularProgressIndeicator() ? DrAppCircularProgressIndeicator()
: scheduleProvider.isError : scheduleProvider.isError

@ -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';
@ -46,7 +45,6 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
appBarTitle: "Search Medicine", appBarTitle: "Search Medicine",
body: Column( body: Column(
@ -61,17 +59,15 @@ 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(bottom: 5, margin: EdgeInsets.only(
left: 10, bottom: SizeConfig.heightMultiplier * 1,
right: 10, right: SizeConfig.heightMultiplier * 2,
top: 0), left: SizeConfig.heightMultiplier * 2,
top: SizeConfig.heightMultiplier * 1),
child: Wrap( child: Wrap(
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
@ -91,15 +87,18 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText( AppText(
"You find " + (data == null ? "0": data.length.toString())+" items in search", "You find " +
(data == null ? "0" : data.length.toString()) +
" items in search",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
margin: 5,), margin: 5,
),
], ],
), ),
), ),
Expanded( Expanded(
child: Container( child: Container(
width: SizeConfig.screenWidth * 0.80, width: SizeConfig.screenWidth * 0.90,
child: !_medicineProvider.isFinished child: !_medicineProvider.isFinished
? DrAppCircularProgressIndeicator() ? DrAppCircularProgressIndeicator()
: _medicineProvider.hasError : _medicineProvider.hasError
@ -109,32 +108,33 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
style: TextStyle( style: TextStyle(
color: Theme.of(context).errorColor), color: Theme.of(context).errorColor),
), ),
):ListView.builder( )
scrollDirection: Axis.vertical, : ListView.builder(
shrinkWrap: true, scrollDirection: Axis.vertical,
itemCount: data == null ? 0 : data.length, shrinkWrap: true,
itemBuilder: (BuildContext context, int index) { itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index) {
return InkWell( return InkWell(
child: MedicineItemWidget( child: MedicineItemWidget(
label: data[index]["ItemDescription"], label: data[index]["ItemDescription"],
url: data[index]["ProductImageBase64"], url: data[index]["ProductImageBase64"],
), ),
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ChangeNotifierProvider( builder: (context) =>
create: (_) => MedicineProvider(), ChangeNotifierProvider(
child: PharmaciesListScreen( create: (_) => MedicineProvider(),
itemID: data[index]["ItemID"]), child: PharmaciesListScreen(
), 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,44 +63,77 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
TextStyle(color: Theme.of(context).errorColor), TextStyle(color: Theme.of(context).errorColor),
), ),
) )
: Column( : StreamBuilder<Object>(
mainAxisAlignment: MainAxisAlignment.start, stream: null,
crossAxisAlignment: CrossAxisAlignment.stretch, builder: (context, snapshot) {
children: <Widget>[ return Row(
AppText( children: <Widget>[
"Description", Expanded(
margin: 10, flex: 1,
fontWeight: FontWeight.bold, child: ClipRRect(
), borderRadius:
AppText( BorderRadius.all(Radius.circular(7)),
_data[0]["ItemDescription"], child: Image.memory(
marginLeft: 10, dataFromBase64String(widget.url),
marginTop: 0, height: SizeConfig.imageSizeMultiplier * 21,
marginRight: 10, width: SizeConfig.imageSizeMultiplier * 20,
marginBottom: 10, fit: BoxFit.cover,
), ),
AppText( ),
"Price", ),
margin: 10, Expanded(
fontWeight: FontWeight.bold, flex: 3,
), child: Column(
AppText( mainAxisAlignment: MainAxisAlignment.start,
_data[0]["SellingPrice"].toString(), crossAxisAlignment:
marginLeft: 10, CrossAxisAlignment.stretch,
marginTop: 0, children: <Widget>[
marginRight: 10, AppText(
marginBottom: 10, "Description",
), marginLeft: 10,
], marginTop: 0,
)), marginRight: 10,
marginBottom: 2,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["ItemDescription"],
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
AppText(
"Price",
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 2,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["SellingPrice"].toString(),
marginLeft: 10,
marginTop: 0,
marginRight: 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,
@ -138,25 +174,36 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
crossAxisAlignment: WrapCrossAlignment.end, crossAxisAlignment: WrapCrossAlignment.end,
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,
Padding( color: Colors.red,
padding: EdgeInsets.all(5), ),
child: InkWell(child: Icon(Icons.pin_drop, color: Colors.red,),onTap: () { onTap: () => launch(
MapsLauncher.launchCoordinates( "tel://" + _data[index]["PhoneNumber"]),
double.parse(_data[index]["Latitude"]), ),
double.parse(_data[index]["Longitude"]), ),
_data[index]["LocationDescription"]); Padding(
},), padding: EdgeInsets.all(5),
), child: InkWell(
child: Icon(
Icons.pin_drop,
color: Colors.red,
),
onTap: () {
MapsLauncher.launchCoordinates(
double.parse(
_data[index]["Latitude"]),
double.parse(
_data[index]["Longitude"]),
_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);
}
} }

@ -134,11 +134,21 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
SizedBox( SizedBox(
height: 5, height: 5,
), ),
RoundedContainer( Container(
margin: 0, decoration: ShapeDecoration(
showBorder: true, shape: RoundedRectangleBorder(
raduis: 30, side: BorderSide(
borderColor: Color(0xff707070), width: 1.0,
style: BorderStyle.solid,
color: Color(0xff707070)),
borderRadius:
BorderRadius.all(Radius.circular(5.0)),
),
),
// margin: 0,
// showBorder: true,
// raduis: 30,
// borderColor: Color(0xff707070),
width: double.infinity, width: double.infinity,
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -313,11 +323,21 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
RoundedContainer( Container(
margin: 0, // margin: 0,
showBorder: true, // showBorder: true,
raduis: 30, // raduis: 30,
borderColor: Color(0xff707070), // borderColor: Color(0xff707070),
decoration: ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 1.0,
style: BorderStyle.solid,
color: Color(0xff707070)),
borderRadius:
BorderRadius.all(Radius.circular(5.0)),
),
),
width: double.infinity, width: double.infinity,
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(

@ -33,10 +33,6 @@ class _PatientsListScreenState extends State<PatientsListScreen> {
print(res); print(res);
}).catchError((error) { }).catchError((error) {
print(error); print(error);
setState(() {
_isLoading = false;
_hasError = error;
});
}); });
} }
_isInit = false; _isInit = false;

@ -104,8 +104,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
}).catchError((error) { }).catchError((error) {
setState(() { setState(() {
_isError = true; _isError = true;
_isLoading = false; this.error = helpers.generateContactAdminMsg(error);
this.error = error;
}); });
}); });
} }
@ -316,7 +315,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.fromLTRB( padding: const EdgeInsets.fromLTRB(
0, 0, 0, 0),//250 0, 0, 0, 0), //250
child: child:
DrAppCircularProgressIndeicator(), DrAppCircularProgressIndeicator(),
)), )),
@ -375,7 +374,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
widget: Column( widget: Column(
children: <Widget>[ children: <Widget>[
Container( Container(
// decoration: myBoxDecoration(), // decoration: myBoxDecoration(),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Column( Column(
@ -387,36 +386,28 @@ class _PatientsScreenState extends State<PatientsScreen> {
"Male" "Male"
? [ ? [
SvgPicture.asset( SvgPicture.asset(
url + url + avatarMale,
avatarMale, height: 80.0,
height: width: 80.0,
80.0, semanticsLabel: 'Male Logo')
width:
80.0,
semanticsLabel:
'Male Logo')
] ]
: [ : [
SvgPicture.asset( SvgPicture.asset(
url + url + avatarFemale,
avatarFemale, height: 80.0,
height: width: 80.0,
80.0, semanticsLabel: 'Female Logo')
width:
80.0,
semanticsLabel:
'Female Logo')
], ],
), ),
SizedBox( SizedBox(
width: 10, width: 10,
), ),
Column( Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment CrossAxisAlignment
.start, .start,
children: <Widget>[ children: <
Widget>[
AppText( AppText(
item.firstName + item.firstName +
" " + " " +
@ -428,7 +419,8 @@ class _PatientsScreenState extends State<PatientsScreen> {
FontWeight FontWeight
.bold, .bold,
backGroundcolor: backGroundcolor:
Colors.white, Colors
.white,
), ),
SizedBox( SizedBox(
height: 8, height: 8,
@ -444,7 +436,8 @@ class _PatientsScreenState extends State<PatientsScreen> {
FontWeight FontWeight
.bold, .bold,
backGroundcolor: backGroundcolor:
Colors.white, Colors
.white,
), ),
// SizedBox( // SizedBox(
@ -461,19 +454,18 @@ class _PatientsScreenState extends State<PatientsScreen> {
FontWeight FontWeight
.bold, .bold,
backGroundcolor: backGroundcolor:
Colors.white, Colors
.white,
), ),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
SERVICES_PATIANT2[int SERVICES_PATIANT2[
.parse( int.parse(patientType)] ==
patientType)] ==
"List_MyOutPatient" "List_MyOutPatient"
? Row( ? Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment MainAxisAlignment.spaceBetween,
.spaceBetween,
children: < children: <
Widget>[ Widget>[
Container( Container(
@ -483,22 +475,16 @@ class _PatientsScreenState extends State<PatientsScreen> {
80, 80,
decoration: decoration:
BoxDecoration( BoxDecoration(
borderRadius: borderRadius: BorderRadius.circular(50),
BorderRadius.circular(50), color: Hexcolor("#20A169"),
color:
Hexcolor("#20A169"),
), ),
child: child:
AppText( AppText(
item.startTime, item.startTime,
color: color: Colors.white,
Colors.white, fontSize: 2 * SizeConfig.textMultiplier,
fontSize: textAlign: TextAlign.center,
2 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold,
textAlign:
TextAlign.center,
fontWeight:
FontWeight.bold,
), ),
), ),
SizedBox( SizedBox(
@ -508,50 +494,44 @@ class _PatientsScreenState extends State<PatientsScreen> {
Container( Container(
child: child:
AppText( AppText(
convertDateFormat2(item convertDateFormat2(item.appointmentDate.toString()),
.appointmentDate fontSize: 2.0 * SizeConfig.textMultiplier,
.toString()), fontWeight: FontWeight.bold,
fontSize:
2.0 * SizeConfig.textMultiplier,
fontWeight:
FontWeight.bold,
), ),
) )
], ],
) )
: AppText( : AppText(
item.nationalityName, item.nationalityName,
fontSize: 2.5 * fontSize:
SizeConfig 2.5 *
.textMultiplier, SizeConfig.textMultiplier,
), ),
], ],
), ),
// Divider(color: Colors.grey) // Divider(color: Colors.grey)
], ],
), ),
), ),
// Divider(color: Colors.grey) // Divider(color: Colors.grey)
], ],
), ),
), ),
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context)
PATIENTS_PROFILE, .pushNamed(
arguments: { PATIENTS_PROFILE,
arguments: {
"patient": item "patient": item
}); });
}, },
), ),
); );
}).toList(),
}).toList(),
), ),
), ),
], ],
), ),
) )
], ],
), ),
@ -588,8 +568,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: _locations.map((item) { children: _locations.map((item) {
bool _isActive = _locations[_activeLocation] == item ? true : false; bool _isActive = _locations[_activeLocation] == item ? true : false;
return Column(mainAxisSize: MainAxisSize.min, return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
children: <Widget>[
InkWell( InkWell(
child: Center( child: Center(
child: Container( child: Container(
@ -602,18 +581,17 @@ class _PatientsScreenState extends State<PatientsScreen> {
child: Center( child: Center(
child: Text( child: Text(
item, item,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
color: _isActive color: _isActive
? Colors.white ? Colors.white
: Colors.black, //Colors.black, : Colors.black, //Colors.black,
// backgroundColor:_isActive // backgroundColor:_isActive
// ? Hexcolor("#B8382B") // ? Hexcolor("#B8382B")
// : Colors.white,//sideColor, // : Colors.white,//sideColor,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
)), )),
), ),
@ -624,7 +602,6 @@ class _PatientsScreenState extends State<PatientsScreen> {
setState(() { setState(() {
_activeLocation = _locations.indexOf(item); _activeLocation = _locations.indexOf(item);
}); });
}), }),
_isActive _isActive
@ -644,17 +621,14 @@ class _PatientsScreenState extends State<PatientsScreen> {
} }
myBoxDecoration() { myBoxDecoration() {
return BoxDecoration( return BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(
// <--- top side
bottom: BorderSide( // <--- top side
color: Colors.grey, color: Colors.grey,
width: 1.0, width: 1.0,
), ),
), ),
); );
} }
} }

@ -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';
@ -116,29 +117,46 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
ExpansionTile( ExpansionTile(
title: Row( title: Row(
children: <Widget>[ children: <Widget>[
Icon( Column(
approvalsList[index][ children: <Widget>[
"ApprovalStatusDescption"] Icon(
.toString() approvalsList[index][
.contains("Approved")
? Icons.check_circle_outline
: approvalsList[index][
"ApprovalStatusDescption"] "ApprovalStatusDescption"]
.toString() .toString()
.contains("Cancelled") .contains("Approved")
? Icons.highlight_off ? DoctorApp.approved_icon
: Icons.history, : approvalsList[index][
color: approvalsList[index][ "ApprovalStatusDescption"]
"ApprovalStatusDescption"] .toString()
.toString() .contains("Cancelled")
.contains("Approved") ? DoctorApp.reject_icon
? Colors.green : DoctorApp.pending_icon,
: approvalsList[index][ color: approvalsList[index][
"ApprovalStatusDescption"] "ApprovalStatusDescption"]
.toString() .toString()
.contains("Cancelled") .contains("Approved")
? Colors.red ? Colors.green
: Colors.yellow, : approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? Colors.red
: 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(
@ -186,15 +204,8 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
backgroundColor: backgroundColor:
Color(PRIMARY_COLOR), Color(PRIMARY_COLOR),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row(
children: <Widget>[
AppText(
"Approval No:",
color: Colors.white,
fontSize: 16,
margin: 10,
),
AppText( AppText(
approvalsList[index] approvalsList[index]
["ApprovalNo"] ["ApprovalNo"]
@ -203,10 +214,21 @@ 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>[
Expanded( Expanded(

@ -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();

@ -79,112 +79,112 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
body: patientsProv.isLoading body: patientsProv.isLoading
? DrAppCircularProgressIndeicator() ? DrAppCircularProgressIndeicator()
: patientsProv.isError : patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error) ? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientRadiologyList.length == 0 : patientsProv.patientRadiologyList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Vital Sign') ? DrAppEmbeddedError(error: 'You don\'t have any Vital Sign')
: Container( : Container(
margin: EdgeInsets.fromLTRB( margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05, SizeConfig.realScreenWidth * 0.05,
0, 0,
SizeConfig.realScreenWidth * 0.05, SizeConfig.realScreenWidth * 0.05,
0), 0),
child: Container( child: Container(
margin: EdgeInsets.symmetric(vertical: 10), margin: EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(20.0), Radius.circular(20.0),
), ),
), ),
child: ListView.builder( child: ListView.builder(
itemCount: patientsProv.patientRadiologyList.length, itemCount: patientsProv.patientRadiologyList.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => RadiologyReportScreen(reportData: patientsProv.patientRadiologyList[index].reportData,)),); MaterialPageRoute(builder: (context) => RadiologyReportScreen(reportData: patientsProv.patientRadiologyList[index].reportData,)),);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius:
BorderRadius.all(Radius.circular(10)), BorderRadius.all(Radius.circular(10)),
border: Border( border: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.grey, width: 0.5), color: Colors.grey, width: 0.5),
top: BorderSide( top: BorderSide(
color: Colors.grey, width: 0.5), color: Colors.grey, width: 0.5),
left: BorderSide( left: BorderSide(
color: Colors.grey, width: 0.5), color: Colors.grey, width: 0.5),
right: BorderSide( right: BorderSide(
color: Colors.grey, width: 0.5), color: Colors.grey, width: 0.5),
),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
url: patientsProv
.patientRadiologyList[index]
.doctorImageURL,
),
Expanded(
child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientRadiologyList[index].doctorName}',
fontSize: 2.5 *
SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold),
SizedBox(
height: 8,
),
AppText(
'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 8,
), ),
), AppText(
child: Column( ' ${patientsProv.patientRadiologyList[index].clinicName}',
crossAxisAlignment: fontSize: 2 *
CrossAxisAlignment.start, SizeConfig
children: <Widget>[ .textMultiplier,
Row( color: Theme.of(context)
children: <Widget>[ .primaryColor,
LargeAvatar( ),
url: patientsProv SizedBox(
.patientRadiologyList[index] height: 8,
.doctorImageURL, ),
), ],
Expanded(
child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientRadiologyList[index].doctorName}',
fontSize: 2.5 *
SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold),
SizedBox(
height: 8,
),
AppText(
'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientRadiologyList[index].clinicName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
),
],
),
),
)
],
),
],
),
), ),
); ),
}), )
), ],
),
],
), ),
),
);
}),
),
),
); );
} }
} }

@ -1,6 +1,13 @@
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/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';
import 'package:flutter/scheduler.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
import '../../../providers/patients_provider.dart'; import '../../../providers/patients_provider.dart';
@ -27,26 +34,29 @@ class ReferPatientScreen extends StatefulWidget {
class _ReferPatientState extends State<ReferPatientScreen> { class _ReferPatientState extends State<ReferPatientScreen> {
PatientsProvider patientsProv; PatientsProvider patientsProv;
var doctorsList; var doctorsList;
var clinicsList; final _remarksController = TextEditingController();
var referralFrequancyList; final _extController = TextEditingController();
final _controller = TextEditingController();
var _isInit = true; var _isInit = true;
var clinicId;
var doctorId;
var freqId;
String _selectedClinic; String _selectedClinic;
String _selectedDoctor; String _selectedDoctor;
String _selectedReferralFrequancy; String _selectedReferralFrequancy;
List<String> _priorities = ['Very Urgent', 'Urgent', 'Routine'];
int _activePriority = 2;
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
if (_isInit) { if (_isInit) {
doctorsList = null;
patientsProv = Provider.of<PatientsProvider>(context); patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getClinicsList(); patientsProv.getClinicsList();
patientsProv.getReferralFrequancyList(); patientsProv.getReferralFrequancyList();
setState(() {
clinicsList = patientsProv.clinicsList;
referralFrequancyList = patientsProv.referalFrequancyList;
});
} }
_isInit = false; _isInit = false;
} }
@ -54,214 +64,413 @@ class _ReferPatientState extends State<ReferPatientScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
appBarTitle: "Progress Note", appBarTitle: "Refer Patient",
body: patientsProv.isLoading body: patientsProv.isLoading
? DrAppCircularProgressIndeicator() ? DrAppCircularProgressIndeicator()
: patientsProv.isError : patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error) ? DrAppEmbeddedError(error: patientsProv.error)
: clinicsList == null : patientsProv.clinicsList == null
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: 'You don\'t have any Progress Note') error: 'Something Wrong!')
: Column( : SingleChildScrollView(
children: <Widget>[ child: Column(
RoundedContainer( mainAxisAlignment: MainAxisAlignment.start,
margin: 0, crossAxisAlignment: CrossAxisAlignment.start,
showBorder: true, children: <Widget>[
raduis: 30, AppText(
borderColor: Color(0xff707070), "Clinic",
width: double.infinity, fontSize: 18,
child: Padding( fontWeight: FontWeight.bold,
padding: EdgeInsets.only( marginLeft: 15,
top: SizeConfig.widthMultiplier * 0.9, marginTop: 15,
bottom: SizeConfig.widthMultiplier * 0.9, ),
right: SizeConfig.widthMultiplier * 3, RoundedContainer(
left: SizeConfig.widthMultiplier * 3), margin: 10,
child: Row( showBorder: true,
mainAxisSize: MainAxisSize.max, raduis: 30,
children: <Widget>[ borderColor: Color(0xff707070),
Expanded( width: double.infinity,
// add Expanded to have your dropdown button fill remaining space child: Padding(
child: DropdownButton( padding: EdgeInsets.only(
isExpanded: true, top: SizeConfig.widthMultiplier * 0.9,
value: _selectedClinic, bottom: SizeConfig.widthMultiplier * 0.9,
iconSize: 40, right: SizeConfig.widthMultiplier * 3,
elevation: 16, left: SizeConfig.widthMultiplier * 3),
selectedItemBuilder: child: Row(
(BuildContext context) { mainAxisSize: MainAxisSize.max,
return patientsProv 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() .getClinicNameList()
.map((item) { .map((item) {
return Row( return DropdownMenuItem(
mainAxisSize: MainAxisSize.max, value: item.toString(),
children: <Widget>[ child: Text(
AppText( item,
item, textAlign: TextAlign.end,
fontSize: ),
SizeConfig.textMultiplier *
2.1,
),
],
); );
}).toList(); }).toList(),
}, ),
onChanged: (newValue) => {
setState(() {
_selectedDoctor = null;
_selectedClinic = newValue;
var clinicInfo =
clinicsList.singleWhere((i) =>
i['ClinicDescription']
.toString()
.contains(_selectedClinic));
var clinicId =
clinicInfo['ClinicID'].toString();
patientsProv.getDoctorsList(clinicId);
})
},
items: patientsProv
.getClinicNameList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
), ),
), ],
], ),
), ),
), ),
), //--------------------------------------------------------------------//
//--------------------------------------------------------------------// AppText(
RoundedContainer( "Doctor",
margin: 0, fontSize: 18,
showBorder: true, fontWeight: FontWeight.bold,
raduis: 30, marginLeft: 15,
borderColor: Color(0xff707070), marginTop: 15,
width: double.infinity, ),
child: Padding(
padding: EdgeInsets.only( RoundedContainer(
top: SizeConfig.widthMultiplier * 0.9, margin: 10,
bottom: SizeConfig.widthMultiplier * 0.9, showBorder: true,
right: SizeConfig.widthMultiplier * 3, raduis: 30,
left: SizeConfig.widthMultiplier * 3), borderColor: Color(0xff707070),
child: Row( width: double.infinity,
mainAxisSize: MainAxisSize.max, child: Padding(
children: <Widget>[ padding: EdgeInsets.only(
Expanded( top: SizeConfig.widthMultiplier * 0.9,
// add Expanded to have your dropdown button fill remaining space bottom: SizeConfig.widthMultiplier * 0.9,
child: DropdownButton( right: SizeConfig.widthMultiplier * 3,
isExpanded: true, left: SizeConfig.widthMultiplier * 3),
value: _selectedDoctor, child: Row(
iconSize: 40, mainAxisSize: MainAxisSize.max,
elevation: 16, children: <Widget>[
selectedItemBuilder: Expanded(
(BuildContext context) { // add Expanded to have your dropdown button fill remaining space
return patientsProv 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() .getDoctorNameList()
.map((item) { .map((item) {
return Row( return DropdownMenuItem(
mainAxisSize: MainAxisSize.max, value: item.toString(),
children: <Widget>[ child: Text(
AppText( item,
item, textAlign: TextAlign.end,
fontSize: ),
SizeConfig.textMultiplier *
2.1,
),
],
); );
}).toList(); }).toList(),
}, ),
onChanged: (newValue) => {
setState(() {
_selectedDoctor = newValue;
})
},
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(
RoundedContainer( margin: 10,
margin: 0, showBorder: true,
showBorder: true, raduis: 30,
raduis: 30, borderColor: Color(0xff707070),
borderColor: Color(0xff707070), width: double.infinity,
width: double.infinity, child: Padding(
child: Padding( padding: EdgeInsets.only(
padding: EdgeInsets.only( top: SizeConfig.widthMultiplier * 0.9,
top: SizeConfig.widthMultiplier * 0.9, bottom: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9, right: SizeConfig.widthMultiplier * 3,
right: SizeConfig.widthMultiplier * 3, left: SizeConfig.widthMultiplier * 3),
left: SizeConfig.widthMultiplier * 3), child: Row(
child: Row( mainAxisSize: MainAxisSize.max,
mainAxisSize: MainAxisSize.max, children: <Widget>[
children: <Widget>[ Expanded(
Expanded( // add Expanded to have your dropdown button fill remaining space
// add Expanded to have your dropdown button fill remaining space child: DropdownButton(
child: DropdownButton( isExpanded: true,
isExpanded: true, value: _selectedReferralFrequancy,
value: _selectedReferralFrequancy, iconSize: 40,
iconSize: 40, elevation: 16,
elevation: 16, selectedItemBuilder:
selectedItemBuilder: (BuildContext context) {
(BuildContext context) { return patientsProv
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();
})
},
items: patientsProv
.getReferralNamesList() .getReferralNamesList()
.map((item) { .map((item) {
return Row( return DropdownMenuItem(
mainAxisSize: MainAxisSize.max, value: item.toString(),
children: <Widget>[ child: Text(
AppText( item,
item, textAlign: TextAlign.end,
fontSize: ),
SizeConfig.textMultiplier *
2.1,
),
],
); );
}).toList(); }).toList(),
}, ),
onChanged: (newValue) => {
setState(() {
_selectedReferralFrequancy = newValue;
})
},
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",
controller: _remarksController,
inputFormatter: ONLY_LETTERS,
textInputType: TextInputType.text,
onChanged: (value) => {},
), ),
), ),
Padding(
padding: const EdgeInsets.all(20.0),
child: 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){
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
);
}
} }

@ -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,14 +164,15 @@ class Helpers {
), ),
); );
} }
/*
/*
*@author: Amjad Amireh *@author: Amjad Amireh
*@Date:5/5/2020 *@Date:5/5/2020
*@param: checkDate *@param: checkDate
*@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;
} }
clearSharedPref() async {
await sharedPref.clear();
}
logout() async {
await clearSharedPref();
Navigator.of(AppGlobal.CONTEX).pushReplacementNamed(LOGIN);
}
} }

@ -13,9 +13,8 @@ class TranslationBase {
return Localizations.of<TranslationBase>(context, TranslationBase); return Localizations.of<TranslationBase>(context, TranslationBase);
} }
String get dashboardScreenToolbarTitle =>
localizedValues['dashboardScreenToolbarTitle'][locale.languageCode];
String get dashboardScreenToolbarTitle => localizedValues['dashboardScreenToolbarTitle'][locale.languageCode];
String get settings => localizedValues['settings'][locale.languageCode]; String get settings => localizedValues['settings'][locale.languageCode];
@ -33,25 +32,35 @@ class TranslationBase {
String get mobileNo => localizedValues['mobileNo'][locale.languageCode]; String get mobileNo => localizedValues['mobileNo'][locale.languageCode];
String get messagesScreenToolbarTitle => localizedValues['messagesScreenToolbarTitle'][locale.languageCode]; String get messagesScreenToolbarTitle =>
localizedValues['messagesScreenToolbarTitle'][locale.languageCode];
String get mySchedule => localizedValues['mySchedule'][locale.languageCode]; String get mySchedule => localizedValues['mySchedule'][locale.languageCode];
String get errorNoSchedule => localizedValues['errorNoSchedule'][locale.languageCode]; String get errorNoSchedule =>
localizedValues['errorNoSchedule'][locale.languageCode];
String get verify => localizedValues['verify'][locale.languageCode]; String get verify => localizedValues['verify'][locale.languageCode];
String get referralDoctor => localizedValues['referralDoctor'][locale.languageCode]; String get referralDoctor =>
String get referringClinic => localizedValues['referringClinic'][locale.languageCode]; localizedValues['referralDoctor'][locale.languageCode];
String get referringClinic =>
localizedValues['referringClinic'][locale.languageCode];
String get frequency => localizedValues['frequency'][locale.languageCode]; String get frequency => localizedValues['frequency'][locale.languageCode];
String get priority => localizedValues['priority'][locale.languageCode]; String get priority => localizedValues['priority'][locale.languageCode];
String get maxResponseTime => localizedValues['maxResponseTime'][locale.languageCode]; String get maxResponseTime =>
String get clinicDetailsandRemarks=> localizedValues['clinicDetailsandRemarks'][locale.languageCode]; localizedValues['maxResponseTime'][locale.languageCode];
String get answerSuggestions => localizedValues['answerSuggestions'][locale.languageCode]; String get clinicDetailsandRemarks =>
localizedValues['clinicDetailsandRemarks'][locale.languageCode];
String get answerSuggestions =>
localizedValues['answerSuggestions'][locale.languageCode];
String get outPatients => localizedValues['outPatients'][locale.languageCode]; String get outPatients => localizedValues['outPatients'][locale.languageCode];
String get searchPatient => localizedValues['searchPatient'][locale.languageCode]; String get searchPatient =>
localizedValues['searchPatient'][locale.languageCode];
String get labResult => localizedValues['labResult'][locale.languageCode]; String get labResult => localizedValues['labResult'][locale.languageCode];
String get todayStatistics => localizedValues['todayStatistics'][locale.languageCode]; String get todayStatistics =>
localizedValues['todayStatistics'][locale.languageCode];
String get familyMedicine =>
localizedValues['familyMedicine'][locale.languageCode];
String get arrived => localizedValues['arrived'][locale.languageCode]; String get arrived => localizedValues['arrived'][locale.languageCode];
String get er => localizedValues['er'][locale.languageCode]; String get er => localizedValues['er'][locale.languageCode];
String get walkIn => localizedValues['walkIn'][locale.languageCode]; String get walkIn => localizedValues['walkIn'][locale.languageCode];
@ -60,8 +69,8 @@ class TranslationBase {
String get referral => localizedValues['referral'][locale.languageCode]; String get referral => localizedValues['referral'][locale.languageCode];
String get inPatient => localizedValues['inPatient'][locale.languageCode]; String get inPatient => localizedValues['inPatient'][locale.languageCode];
String get operations => localizedValues['inPatient'][locale.languageCode]; String get operations => localizedValues['inPatient'][locale.languageCode];
String get patientServices => localizedValues['patientServices'][locale.languageCode]; String get patientServices =>
localizedValues['patientServices'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -54,17 +54,15 @@ class _LoginFormState extends State<LoginForm> {
void initState() { void initState() {
super.initState(); super.initState();
initPlatformState(); initPlatformState();
} }
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
if (_isInit) { if (_isInit) {
if (projectsList.length == 0) { if (projectsList.length == 0) {
getProjectsList(); getProjectsList();
} }
} }
_isInit = false; _isInit = false;
} }
@ -99,8 +97,9 @@ class _LoginFormState extends State<LoginForm> {
userInfo.UserID = value.trim(); userInfo.UserID = value.trim();
}, },
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusPass); FocusScope.of(context).nextFocus();
}, },
autofocus: false,
), ),
buildSizedBox(), buildSizedBox(),
TextFormField( TextFormField(
@ -119,7 +118,7 @@ class _LoginFormState extends State<LoginForm> {
userInfo.Password = value; userInfo.Password = value;
}, },
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusProject); FocusScope.of(context).nextFocus();
helpers.showCupertinoPicker( helpers.showCupertinoPicker(
context, projectsList, 'Name', onSelectProject); context, projectsList, 'Name', onSelectProject);
}, },
@ -144,22 +143,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,17 +189,26 @@ class _LoginFormState extends State<LoginForm> {
*/ */
InputDecoration buildInputDecoration(BuildContext context, hint, asset) { InputDecoration buildInputDecoration(BuildContext context, hint, asset) {
return InputDecoration( return InputDecoration(
prefixIcon: Image.asset(asset), prefixIcon: Image.asset(asset),
hintText: hint, hintText: hint,
hintStyle: TextStyle(fontSize: 2 * SizeConfig.textMultiplier), hintStyle: TextStyle(fontSize: 2 * SizeConfig.textMultiplier),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(20)), borderRadius: BorderRadius.all(Radius.circular(20)),
borderSide: BorderSide(color: Hexcolor('#CCCCCC')), borderSide: BorderSide(color: Hexcolor('#CCCCCC')),
), ),
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() {
@ -224,6 +218,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();
@ -237,7 +236,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");
@ -247,7 +246,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);
@ -295,7 +294,7 @@ class _LoginFormState extends State<LoginForm> {
// Platform messages may fail, so we use a try/catch PlatformException. // Platform messages may fail, so we use a try/catch PlatformException.
try { try {
platformImei = platformImei =
await ImeiPlugin.getImei(shouldShowRequestPermissionRationale: false); await ImeiPlugin.getImei(shouldShowRequestPermissionRationale: false);
idunique = await ImeiPlugin.getId(); idunique = await ImeiPlugin.getId();
} on PlatformException { } on PlatformException {
platformImei = 'Failed to get platform version.'; platformImei = 'Failed to get platform version.';

@ -191,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(
@ -264,16 +257,25 @@ class _VerifyAccountState extends State<VerifyAccount> {
*/ */
InputDecoration buildInputDecoration(BuildContext context) { InputDecoration buildInputDecoration(BuildContext context) {
return InputDecoration( return InputDecoration(
// ts/images/password_icon.png // ts/images/password_icon.png
contentPadding: EdgeInsets.only(top: 30, bottom: 30), contentPadding: EdgeInsets.only(top: 30, bottom: 30),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)), borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(color: Colors.black), borderSide: BorderSide(color: Colors.black),
), ),
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),
),
);
} }
/* /*
@ -284,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(
@ -293,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;
} }
@ -322,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<String,dynamic> model = { Map<String, dynamic> model = {
"activationCode": activationCode, "activationCode": activationCode,
"DoctorID": _loggedUser['DoctorID'], "DoctorID": _loggedUser['DoctorID'],
"LogInTokenID": _loggedUser['LogInTokenID'], "LogInTokenID": _loggedUser['LogInTokenID'],
@ -381,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(

@ -50,7 +50,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
super.didChangeDependencies(); super.didChangeDependencies();
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
verificationMethod = verificationMethod =
routeArgs != null ? routeArgs['verificationMethod'] : null; routeArgs != null ? routeArgs['verificationMethod'] : null;
} }
@override @override
@ -101,17 +101,17 @@ class _VerificationMethodsState extends State<VerificationMethods> {
child: buildFingerprintMethod( child: buildFingerprintMethod(
context, authProv), context, authProv),
replacement: replacement:
buildWhatsAppMethod(context, authProv), buildWhatsAppMethod(context, authProv),
), ),
Visibility( Visibility(
visible: hideSilentMethods() ? false : true, visible: hideSilentMethods() ? false : true,
child: buildFaceIDMethod(context, authProv), child: buildFaceIDMethod(context, authProv),
replacement: replacement:
buildSMSMethod(context, authProv), buildSMSMethod(context, authProv),
), ),
Visibility( Visibility(
visible: visible:
hideSilentMethods() ? false : true, hideSilentMethods() ? false : true,
child: buildWhatsAppMethod( child: buildWhatsAppMethod(
context, authProv)), context, authProv)),
Visibility( Visibility(
@ -126,8 +126,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
// height: 500, // height: 500,
), ),
SizedBox( SizedBox(
// height: 20, // height: 20,
) )
], ],
), ),
); );
@ -136,7 +136,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
}); });
} }
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:28/5/2020 *@Date:28/5/2020
*@param: BuildContext context, AuthProvider authProv *@param: BuildContext context, AuthProvider authProv
@ -149,7 +149,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
sendActivationCodeByOtpNotificationType(1, authProv); sendActivationCodeByOtpNotificationType(1, authProv);
}); });
} }
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:28/5/2020 *@Date:28/5/2020
*@param: BuildContext context, AuthProvider authProv *@param: BuildContext context, AuthProvider authProv
@ -159,9 +159,9 @@ class _VerificationMethodsState extends State<VerificationMethods> {
Center buildWhatsAppMethod(BuildContext context, AuthProvider authProv) { Center buildWhatsAppMethod(BuildContext context, AuthProvider authProv) {
return buildVerificationMethod( return buildVerificationMethod(
context, 'assets/images/verification_whatsapp_icon.png', 'WhatsApp', context, 'assets/images/verification_whatsapp_icon.png', 'WhatsApp',
() { () {
sendActivationCodeByOtpNotificationType(2, authProv); sendActivationCodeByOtpNotificationType(2, authProv);
}); });
} }
/* /*
*@author: Elham Rababah *@author: Elham Rababah
@ -186,8 +186,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
Center buildFingerprintMethod(BuildContext context, AuthProvider authProv) { Center buildFingerprintMethod(BuildContext context, AuthProvider authProv) {
return buildVerificationMethod(context, return buildVerificationMethod(context,
'assets/images/verification_fingerprint_icon.png', 'Fingerprint', () { 'assets/images/verification_fingerprint_icon.png', 'Fingerprint', () {
sendActivationCodeByOtpNotificationType(4, authProv); sendActivationCodeByOtpNotificationType(4, authProv);
}); });
} }
/* /*
@ -212,7 +212,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
width: 1, width: 1,
color: Hexcolor( color: Hexcolor(
'#CCCCCC') // <--- border width here '#CCCCCC') // <--- border width here
), ),
borderRadius: BorderRadius.all(Radius.circular(10))), borderRadius: BorderRadius.all(Radius.circular(10))),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
@ -251,6 +251,7 @@ 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);
@ -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']);

@ -1,11 +1,14 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:flutter_svg/svg.dart';
import '../shared/rounded_container_widget.dart'; import '../shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; 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 IconData icon; final String icon;
final String value; final String value;
final String label; final String label;
final Color backgroundColor; final Color backgroundColor;
@ -43,16 +46,16 @@ class _DashboardItemTextsState extends State<DashboardItemIconText> {
Align( Align(
alignment: FractionalOffset.topLeft, alignment: FractionalOffset.topLeft,
child: Container( child: Container(
margin: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Icon( child: SvgPicture.asset(
widget.icon, widget.icon,
color: widget.iconColor, color: widget.iconColor,
), width: SizeConfig.widthMultiplier * 7,
)), ))),
Align( Align(
alignment: FractionalOffset.bottomRight, alignment: FractionalOffset.bottomRight,
child: Container( child: Container(
margin: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,

@ -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(

@ -56,9 +56,9 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
fontSize: 2.5 * SizeConfig.textMultiplier, fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
Icon(_showDetails Icon(_showDetails
? Icons.keyboard_arrow_up ? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down), : Icons.keyboard_arrow_down),
], ],
), ),
@ -66,253 +66,253 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
!_showDetails !_showDetails
? Container() ? Container()
: AnimatedContainer( : AnimatedContainer(
duration: Duration(milliseconds: 200), duration: Duration(milliseconds: 200),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
SizedBox(height: 5,), SizedBox(height: 5,),
Divider(color: Color(0xFF000000),height: 0.5,), Divider(color: Color(0xFF000000),height: 0.5,),
Table( Table(
border: TableBorder.symmetric(inside: BorderSide(width: 0.5),), border: TableBorder.symmetric(inside: BorderSide(width: 0.5),),
children: [
TableRow(
children: [ children: [
TableRow( Container(
children: [ margin: EdgeInsets.all(2.5),
Container( padding: EdgeInsets.all(5),
margin: EdgeInsets.all(2.5), child: Column(
padding: EdgeInsets.all(5), crossAxisAlignment: CrossAxisAlignment.start,
child: Column( children: <Widget>[
crossAxisAlignment: CrossAxisAlignment.start, AppText(
children: <Widget>[ 'File No',
AppText( fontSize:
'File No', 1.7 * SizeConfig.textMultiplier,
fontSize: fontWeight: FontWeight.bold,
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(height: 5,),
AppText(
'${widget.myReferralPatientModel.referringDoctor}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
), ),
), SizedBox(height: 5,),
Container( AppText(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5), '${widget.myReferralPatientModel.referringDoctor}',
padding: EdgeInsets.all(5), fontSize:
child: Column( 1.7 * SizeConfig.textMultiplier,
crossAxisAlignment: CrossAxisAlignment.start, fontWeight: FontWeight.w300,
children: <Widget>[ )
AppText( ],
'Referring Doctor', ),
fontSize: ),
1.7 * SizeConfig.textMultiplier, Container(
fontWeight: FontWeight.bold, margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
), padding: EdgeInsets.all(5),
SizedBox(height: 5,), child: Column(
AppText( crossAxisAlignment: CrossAxisAlignment.start,
widget.myReferralPatientModel children: <Widget>[
.referringClinicDescription, AppText(
fontSize: 'Referring Doctor',
1.7 * SizeConfig.textMultiplier, fontSize:
fontWeight: FontWeight.w300, 1.7 * SizeConfig.textMultiplier,
) fontWeight: FontWeight.bold,
],
), ),
), SizedBox(height: 5,),
] AppText(
widget.myReferralPatientModel
.referringClinicDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
), ),
TableRow( ]
children: [ ),
Container( TableRow(
margin: EdgeInsets.all(2.5), children: [
padding: EdgeInsets.all(5), Container(
child: Column( margin: EdgeInsets.all(2.5),
crossAxisAlignment: padding: EdgeInsets.all(5),
CrossAxisAlignment.start, child: Column(
children: <Widget>[ crossAxisAlignment:
AppText( CrossAxisAlignment.start,
'Referring Clinic', children: <Widget>[
fontSize: AppText(
1.7 * SizeConfig.textMultiplier, 'Referring Clinic',
fontWeight: FontWeight.bold, fontSize:
), 1.7 * SizeConfig.textMultiplier,
SizedBox(height: 5,), fontWeight: FontWeight.bold,
AppText(
'${widget.myReferralPatientModel.referringClinicDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
), ),
Container( SizedBox(height: 5,),
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5), AppText(
padding: EdgeInsets.all(5), '${widget.myReferralPatientModel.referringClinicDescription}',
child: Column( fontSize:
crossAxisAlignment: 1.7 * SizeConfig.textMultiplier,
CrossAxisAlignment.start, fontWeight: FontWeight.w300,
children: <Widget>[
AppText(
'Frequency',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(height: 5,),
AppText(
widget.myReferralPatientModel
.frequencyDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
) )
] ],
),
), ),
TableRow( Container(
children: [ margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
Container( padding: EdgeInsets.all(5),
margin: EdgeInsets.all(2.5), child: Column(
padding: EdgeInsets.all(5), crossAxisAlignment:
child: Column( CrossAxisAlignment.start,
crossAxisAlignment: children: <Widget>[
CrossAxisAlignment.start, AppText(
children: <Widget>[ 'Frequency',
AppText( fontSize:
'Priority', 1.7 * SizeConfig.textMultiplier,
fontSize: fontWeight: FontWeight.bold,
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(height: 5,),
AppText(
'${widget.myReferralPatientModel.priorityDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
), ),
SizedBox(height: 5,),
AppText(
widget.myReferralPatientModel
.frequencyDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
)
]
),
TableRow(
children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Priority',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
), ),
Container( SizedBox(height: 5,),
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5), AppText(
padding: EdgeInsets.all(5), '${widget.myReferralPatientModel.priorityDescription}',
child: Column( fontSize:
crossAxisAlignment: 1.7 * SizeConfig.textMultiplier,
CrossAxisAlignment.start, fontWeight: FontWeight.w300,
children: <Widget>[ )
AppText( ],
'Max Response Time', ),
fontSize: ),
1.7 * SizeConfig.textMultiplier, Container(
fontWeight: FontWeight.bold, margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
), padding: EdgeInsets.all(5),
SizedBox(height: 5,), child: Column(
AppText( crossAxisAlignment:
Helpers.getDateFormatted(widget CrossAxisAlignment.start,
.myReferralPatientModel children: <Widget>[
.mAXResponseTime), AppText(
fontSize: 'Max Response Time',
1.7 * SizeConfig.textMultiplier, fontSize:
fontWeight: FontWeight.w300, 1.7 * SizeConfig.textMultiplier,
) fontWeight: FontWeight.bold,
], ),
), SizedBox(height: 5,),
AppText(
Helpers.getDateFormatted(widget
.myReferralPatientModel
.mAXResponseTime),
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
) )
], ],
), ),
)
],
),
], ],
), ),
Divider(color: Color(0xFF000000),height: 0.5,), Divider(color: Color(0xFF000000),height: 0.5,),
SizedBox( SizedBox(
height: 5, height: 5,
), ),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText( AppText(
'Clinic Details and Remarks', 'Clinic Details and Remarks',
fontSize: 1.7 * SizeConfig.textMultiplier, fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
textAlign: TextAlign.start,), textAlign: TextAlign.start,),
Texts( Texts(
'${widget.myReferralPatientModel.referringDoctorRemarks}', '${widget.myReferralPatientModel.referringDoctorRemarks}',
style: "bodyText1", style: "bodyText1",
readMore: true, readMore: true,
textAlign: TextAlign.start,
maxLength: 100)
],
),
SizedBox(
height: 5,
),
AppText(
'Answer/Suggestions',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
textAlign: TextAlign.start, textAlign: TextAlign.start,
), maxLength: 100)
SizedBox( ],
height: 5, ),
), SizedBox(
Form( height: 5,
key: _formKey, ),
child: TextFields( AppText(
maxLines: 2, 'Answer/Suggestions',
minLines: 2, fontSize: 1.7 * SizeConfig.textMultiplier,
hintText: 'Answer the patient', fontWeight: FontWeight.bold,
fontWeight: FontWeight.normal, textAlign: TextAlign.start,
initialValue: widget.myReferralPatientModel.referredDoctorRemarks ?? '', ),
readOnly: _isLoading, SizedBox(
validator: (value) { height: 5,
if (value.isEmpty) ),
return "please enter answer"; Form(
else key: _formKey,
return null; child: TextFields(
}, maxLines: 2,
), minLines: 2,
), hintText: 'Answer the patient',
SizedBox(height: 10.0), fontWeight: FontWeight.normal,
SizedBox(height: 10.0), initialValue: widget.myReferralPatientModel.referredDoctorRemarks ?? '',
Container( readOnly: _isLoading,
width: double.infinity, validator: (value) {
margin: EdgeInsets.only(left: 10,right: 10), if (value.isEmpty)
child: Button( return "please enter answer";
onTap: () async { else
final form = _formKey.currentState; return null;
if (form.validate()) { },
setState(() { ),
_isLoading = true; ),
}); SizedBox(height: 10.0),
try { SizedBox(height: 10.0),
await Provider.of<MyReferralPatientProvider>(context, listen: false).replay(answerController.text.toString(), widget.myReferralPatientModel); Container(
setState(() { width: double.infinity,
_isLoading = false; margin: EdgeInsets.only(left: 10,right: 10),
}); child: Button(
DrAppToastMsg.showSuccesToast('Reply Successfully'); onTap: () async {
final form = _formKey.currentState;
if (form.validate()) {
setState(() {
_isLoading = true;
});
try {
await Provider.of<MyReferralPatientProvider>(context, listen: false).replay(answerController.text.toString(), widget.myReferralPatientModel);
setState(() {
_isLoading = false;
});
DrAppToastMsg.showSuccesToast('Reply Successfully');
} catch (e) { } catch (e) {
setState(() { setState(() {
_isLoading = false; _isLoading = false;
}); });
DrAppToastMsg.showErrorToast(e); DrAppToastMsg.showErrorToast(e);
} }
} }
}, },
title: 'Reply', title: 'Reply',
loading: _isLoading, loading: _isLoading,
),
)
],
), ),
) )
],
),
)
], ],
), ),
), ),

@ -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,)
], ],
), ),

@ -6,7 +6,7 @@ class HomeItem extends StatelessWidget {
final String image; final String image;
final String link; final String link;
HomeItem(this.id, this.title, this.image,this.link); HomeItem(this.id, this.title, this.image, this.link);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell( return InkWell(
@ -22,21 +22,21 @@ class HomeItem extends StatelessWidget {
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Container( Container(
// decoration: BoxDecoration(color:Colors.red), // decoration: BoxDecoration(color:Colors.red),
width: 10000, width: 10000,
height: 60, height: 60,
child: CircleAvatar( child: CircleAvatar(
backgroundColor: Colors.white, backgroundColor: Colors.white,
child: Container( child: Container(
child: Image.asset( child: Image.asset(
image, image,
// width 50, // width 50,
scale: 0.6, scale: 0.6,
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
)), )),
Text( Text(
title, title,
style: TextStyle(fontSize: 16), style: TextStyle(fontSize: 16),

@ -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';
@ -18,58 +14,73 @@ import 'package:flutter/material.dart';
*/ */
class MedicineItemWidget extends StatefulWidget { class MedicineItemWidget extends StatefulWidget {
final String label;
final Color backgroundColor;
final bool showBorder;
final Color borderColor;
final String url;
final String label; MedicineItemWidget(
final Color backgroundColor; {@required this.label,
final bool showBorder; this.backgroundColor = Colors.white,
final Color borderColor; this.showBorder = false,
final String url; this.borderColor = Colors.white,
this.url});
MedicineItemWidget({ @required this.label, this.backgroundColor = Colors.white, this.showBorder = false, this.borderColor = Colors.white, this.url});
@override @override
_MedicineItemWidgetState createState() => _MedicineItemWidgetState(); _MedicineItemWidgetState createState() => _MedicineItemWidgetState();
} }
class _MedicineItemWidgetState extends State<MedicineItemWidget> { class _MedicineItemWidgetState extends State<MedicineItemWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return new RoundedContainer( return new RoundedContainer(
height: SizeConfig.heightMultiplier * 8, height: SizeConfig.heightMultiplier * 8,
child:Padding( child: Padding(
padding: const EdgeInsets.all(5.0), padding: const EdgeInsets.all(5.0),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
if(widget.url != null) Container( if (widget.url != null)
height: 39, Container(
width: 39, height: 39,
child: ClipRRect( width: 39,
borderRadius:BorderRadius.all(Radius.circular(7)), child: ClipRRect(
child: Image.memory( borderRadius: BorderRadius.all(Radius.circular(7)),
dataFromBase64String(widget.url), child: Image.memory(
height: SizeConfig.imageSizeMultiplier * 15, dataFromBase64String(widget.url),
width: SizeConfig.imageSizeMultiplier * 15, height: SizeConfig.imageSizeMultiplier * 15,
fit: BoxFit.cover, width: SizeConfig.imageSizeMultiplier * 15,
), fit: BoxFit.cover,
), ),
),
),
Expanded(
child: Padding(
padding: EdgeInsets.all(5),
child: Align(
alignment: Alignment.centerLeft,
child: AppText(widget.label))))
],
), ),
Expanded(child: Padding( padding: EdgeInsets.all(5), child: Align( alignment: Alignment.centerLeft, child: AppText(widget.label))))
],),
), ),
backgroundColor: widget.backgroundColor, showBorder: widget.showBorder, borderColor: widget.borderColor, margin: 4, raduis: 10,); backgroundColor: widget.backgroundColor,
showBorder: widget.showBorder,
borderColor: widget.borderColor,
margin: 4,
raduis: 10,
);
} }
Image imageFromBase64String(String base64String) { Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String)); return Image.memory(base64Decode(base64String));
} }
Uint8List dataFromBase64String(String base64String) { Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String); return base64Decode(base64String);
} }
String base64String(Uint8List data) { String base64String(Uint8List data) {
return base64Encode(data); return base64Encode(data);
}
} }
}

@ -50,7 +50,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: () {
@ -83,7 +83,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');
}, },

@ -35,19 +35,19 @@ class LargeAvatar extends StatelessWidget {
), ),
), ),
); );
} else if (name != null || name.isNotEmpty) { } else if (name == null || name.isEmpty) {
return Center( return Center(
child: AppText( child: AppText(
name[0].toUpperCase(), 'DR',
color: Colors.white, color: Colors.white,
fontSize: 18,
fontWeight: FontWeight.bold,
)); ));
} else { } else {
return Center( return Center(
child: AppText( child: AppText(
'DR', name[0].toUpperCase(),
color: Colors.white, color: Colors.white,
fontSize: 18,
fontWeight: FontWeight.bold,
)); ));
} }
} }

@ -32,46 +32,61 @@ class PatientProfileWidget extends StatelessWidget {
// ProfileStatusInfoWidget() // ProfileStatusInfoWidget()
// ]); // ]);
return Container( return CustomScrollView(primary: false, slivers: <Widget>[
child: Column(children: <Widget>[ SliverList(
Expanded( delegate: SliverChildListDelegate(
flex: 1, [
child: Expanded(
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ flex: 1,
Column(children: <Widget>[ child: Row(
Container( mainAxisAlignment: MainAxisAlignment.center,
padding: EdgeInsets.only(top: 20), children: <Widget>[
child: ProfileImageWidget( Column(children: <Widget>[
url: Container(
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", padding: EdgeInsets.only(top: 20),
name: patient.firstName + ' ' + patient.lastName, child: ProfileImageWidget(
fontsize: 24.0, url:
color: Colors.black, "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
), name: patient.firstName + ' ' + patient.lastName,
fontsize: 24.0,
color: Colors.black,
),
),
Container(
child: Column(
children: <Widget>[
AppText(
'File No: ' + patient.patientId.toString(),
fontWeight: FontWeight.normal,
fontSize: 16,
),
AppText(
patient.genderDescription.toString() +
', ' +
patient.age,
fontWeight: FontWeight.normal,
fontSize: 16,
)
],
),
)
]),
]),
), ),
Container( ],
child: Column( ),
children: <Widget>[
AppText(
'File No: ' + patient.patientId.toString(),
fontWeight: FontWeight.normal,
fontSize: 16,
),
AppText(
patient.genderDescription.toString() + ', ' + patient.age,
fontWeight: FontWeight.normal,
fontSize: 16,
)
],
),
)
]),
]),
), ),
Expanded( SliverPadding(
flex: 2, padding: const EdgeInsets.fromLTRB(20, 30, 15, 10),
child: ProfileMedicalInfoWidget(patient: patient), sliver: ProfileMedicalInfoWidget())
) ]);
]));
// Container(
// child: Column(children: <Widget>[
// Expanded(
// flex: 2,
// child: ,
// )
// ]));
} }
} }

@ -23,65 +23,69 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
// final double contWidth = SizeConfig.realScreenWidth * 0.70; // final double contWidth = SizeConfig.realScreenWidth * 0.70;
// final double contHeight = SizeConfig.screenHeight * 0.30; // final double contHeight = SizeConfig.screenHeight * 0.30;
return CustomScrollView(primary: false, slivers: <Widget>[ return SliverGrid.count(
SliverPadding( crossAxisSpacing: 10,
padding: const EdgeInsets.fromLTRB(20, 30, 15, 10), mainAxisSpacing: 20,
sliver: SliverGrid.count( crossAxisCount: 2,
crossAxisSpacing: 10, childAspectRatio: 1.5,
mainAxisSpacing: 20, children: [
crossAxisCount: 2, PatientProfileButton(
childAspectRatio: 1.5, key: key,
children: [ patient: patient,
PatientProfileButton( name: 'Vital Sign',
key: key, route: VITAL_SIGN_DETAILS,
patient: patient, icon: 'heartbeat.png'),
name: 'Vital Sign', PatientProfileButton(
route: VITAL_SIGN_DETAILS, key: key,
icon: 'heartbeat.png'), patient: patient,
PatientProfileButton( route: LAB_ORDERS,
key: key, name: 'Lab Order',
patient: patient, icon: 'lab.png'),
route: LAB_ORDERS, PatientProfileButton(
name: 'Lab Order', key: key,
icon: 'lab.png'), patient: patient,
PatientProfileButton( route: PRESCRIPTIONS,
key: key, name: 'Prescription',
patient: patient, icon: 'note.png'),
route: PRESCRIPTIONS, PatientProfileButton(
name: 'Prescription', key: key,
icon: 'note.png'), patient: patient,
PatientProfileButton( route: RADIOLOGY,
key: key, name: 'Radiology',
patient: patient, icon: 'radiology-1.png'),
route: RADIOLOGY, Visibility(
name: 'Radiology', visible: selectedPatientType != 0 && selectedPatientType != 5,
icon: 'radiology-1.png'), child: PatientProfileButton(
PatientProfileButton( key: key,
key: key, patient: patient,
patient: patient, route: PROGRESS_NOTE,
route: PROGRESS_NOTE, name: 'Progress Notes',
name: 'Progress Notes', icon: 'heartbeat.png')),
icon: 'heartbeat.png'), PatientProfileButton(
PatientProfileButton( key: key,
key: key, patient: patient,
patient: patient, route: PATIENT_INSURANCE_APPROVALS,
route: PATIENT_INSURANCE_APPROVALS, name: 'Insurance Aprovals',
name: 'Insurance Aprovals', icon: 'lab.png'),
icon: 'lab.png'), Visibility(
PatientProfileButton( visible: selectedPatientType != 0 &&
key: key, selectedPatientType != 5 &&
patient: patient, selectedPatientType != 2,
route: REFER_PATIENT, child: PatientProfileButton(
name: 'Refer Patient', key: key,
icon: 'note.png'), patient: patient,
PatientProfileButton( route: REFER_PATIENT,
key: key, name: 'Refer Patient',
patient: patient, icon: 'note.png')),
route: PATIENT_ORDERS, Visibility(
name: 'Orders', visible: selectedPatientType != 0 && selectedPatientType != 5,
icon: 'radiology-1.png'), child: PatientProfileButton(
])) key: key,
]); patient: patient,
route: PATIENT_ORDERS,
name: 'Orders',
icon: 'radiology-1.png')),
]);
// child: ListView( // child: ListView(
// children: <Widget>[ // children: <Widget>[
// Padding( // Padding(
@ -289,21 +293,18 @@ class PatientProfileButton extends StatelessWidget {
child: Column(children: <Widget>[ child: Column(children: <Widget>[
Expanded( Expanded(
flex: 1, flex: 1,
child: Row( child: Expanded(
crossAxisAlignment: CrossAxisAlignment.start, child: Container(
children: <Widget>[ alignment: Alignment.topLeft,
Container( padding: EdgeInsets.all(5),
padding: EdgeInsets.all(5), child: new AppText(
child: new AppText( this.name,
this.name, color: Colors.red,
color: Colors.red, fontWeight: FontWeight.w600,
fontWeight: FontWeight.w600, textAlign: TextAlign.left,
textAlign: TextAlign.left, fontSize: SizeConfig.textMultiplier * 2,
fontSize: 16, ),
), )),
)
],
),
), ),
Expanded( Expanded(
flex: 1, flex: 1,

@ -89,35 +89,24 @@ class _AppDrawerState extends State<AppDrawer> {
}, },
), ),
), ),
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: () {
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,8 @@
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;
@ -37,12 +32,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.pushReplacementNamed(context, HOME),
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", ),
)
], ],
) )
: null, : null,

@ -33,8 +33,7 @@ class AppText extends StatefulWidget {
this.marginLeft = 0, this.marginLeft = 0,
this.visibility = true, this.visibility = true,
this.textAlign, this.textAlign,
this.backGroundcolor=Colors.white this.backGroundcolor = Colors.white});
});
@override @override
_AppTextState createState() => _AppTextState(); _AppTextState createState() => _AppTextState();
@ -56,13 +55,15 @@ class _AppTextState extends State<AppText> {
child: Text( child: Text(
widget.data, widget.data,
textAlign: widget.textAlign, textAlign: widget.textAlign,
overflow: TextOverflow.clip,
style: TextStyle( style: TextStyle(
color: widget.color, color: widget.color,
fontWeight: widget.fontWeight, fontWeight: widget.fontWeight,
fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2), fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2),
fontFamily: widget.fontFamily, fontFamily: widget.fontFamily,
// backgroundColor:widget.backGroundcolor
), // backgroundColor:widget.backGroundcolor
),
), ),
), ),
); );

@ -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,
), ),
); );
} }

@ -23,7 +23,7 @@ dependencies:
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
flutter_device_type: ^0.2.0 flutter_device_type: ^0.2.0
intl: ^0.16.1 intl: ^0.16.0
http: ^0.12.0+4 http: ^0.12.0+4
provider: ^4.0.5+1 provider: ^4.0.5+1
shared_preferences: ^0.5.6+3 shared_preferences: ^0.5.6+3
@ -39,15 +39,12 @@ dependencies:
eva_icons_flutter: ^2.0.0 eva_icons_flutter: ^2.0.0
expandable: ^4.1.4 expandable: ^4.1.4
# Qr code Scanner # Qr code Scanner
barcode_scan: ^3.0.1 barcode_scan: ^3.0.1
# permissions # permissions
permission_handler: ^5.0.0+hotfix.3 permission_handler: ^5.0.0+hotfix.3
device_info: ^0.4.2+4 device_info: ^0.4.2+4
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2 cupertino_icons: ^0.1.2
@ -61,23 +58,20 @@ dev_dependencies:
build_runner: any build_runner: any
build_web_compilers: any build_web_compilers: any
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec # following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter. # The following section is specific to Flutter.
flutter: flutter:
# The following line ensures that the Material Icons font is # The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in # included with your application, so that you can use the icons in
# the material Icons class. # the material Icons class.
uses-material-design: true uses-material-design: true
# 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
@ -97,14 +91,14 @@ flutter:
- asset: assets/fonts/Work_Sans/WorkSans-Regular.ttf - asset: assets/fonts/Work_Sans/WorkSans-Regular.ttf
- asset: assets/fonts/Work_Sans/WorkSans-Bold.ttf - asset: assets/fonts/Work_Sans/WorkSans-Bold.ttf
weight: 700 weight: 700
# - family: Trajan Pro # - family: Trajan Pro
# fonts: # fonts:
# - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf # - asset: fonts/TrajanPro_Bold.ttf
# weight: 700 # weight: 700
- family: DoctorApp - family: DoctorApp
fonts: fonts:
- asset: fonts/DoctorApp.ttf - asset: fonts/DoctorApp.ttf
# #
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages # see https://flutter.dev/custom-fonts/#from-packages

@ -0,0 +1,8 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDdAHzw+C
qTVdRkviTeVAj7AAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIGnX/M1OFtZvGTEI
h5/B9u+eQwjzRJpanfljungMbc+VAAAAkPGJXHVNFeKLXK+aQFiTKx8EU48dQGLBQVIq4G
1SOgNvOaK2UfnQwSbZzhMAOmA1RCUbpQH9cGr9B/uSI88sdghcTEkNgVAtVF/NHNeKMahf
3hdVQ7ER6Au4FEIhpvUTzF+0G+8QBTabpNQx3UdLUxFAOulX6nIYG2phQIS08V/DdS70IG
luo6vY2w/qnXDsWQ==
-----END OPENSSH PRIVATE KEY-----

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGnX/M1OFtZvGTEIh5/B9u+eQwjzRJpanfljungMbc+V sultan
Loading…
Cancel
Save