1. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/31/2017 1:06:26 PM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

1.1 Files compared

# Location File Last Modified
1 EPIP_submissions.zip\EPIP_submissions\docs\GMRC_3.0_89 EPIP_Remediation_Plan_(GMRC_3.0_89).docx Fri Mar 31 16:50:10 2017 UTC
2 EPIP_submissions.zip\EPIP_submissions\docs\GMRC_3.0_89 EPIP_Remediation_Plan_(GMRC_3.0_89).docx Fri Mar 31 17:46:40 2017 UTC

1.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 4 4818
Changed 3 11
Inserted 0 0
Removed 0 0

1.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

1.4 Active regular expressions

No regular expressions were active.

1.5 Comparison detail

  1   Existing P roduct Int ake Progra m (EPIP)
  2   Patch GMRC *3.0*89
  3   Remediatio n Plan
  4  
  5   Department  of Vetera ns Affairs
  6   March 2017
  7   Version 3. 0
  8  
  9  
  10  
  11   Revision H istory
  12   Date
  13   Version
  14   Descriptio n
  15   Author
  16   03/21/2017
  17   3.0
  18   Updated Pa tch Descri ption, Pro ject Sched ule, Code  Remediatio n, and Doc umentation  Remediati on section s and both  Appendice s
  19   EPIP Proje ct Team
  20   12/22/2016
  21   2.0
  22   Updated en tire docum ent
  23   EPIP Proje ct Team
  24   11/28/2016
  25   1.0
  26   Initial ve rsion
  27   EPIP Proje ct Team
  28  
  29  
  30  
  31  
  32   Table of C ontents
  33   1.Introduc tion1
  34   2.Purpose1
  35   3.Patch De scription1
  36   3.1.Needs  and Requir ements2
  37   4.Points o f Contact3
  38   5.Code Rem ediation3
  39   5.1.Standa rds and Co nventions3
  40   5.2.Review  and Analy sis3
  41   5.3.Coding  Changes3
  42   6.Testing4
  43   6.1.Test P lan4
  44   6.2.Test E nvironment 4
  45   6.3.Test R eadiness R eview4
  46   6.4.Testin g Phases5
  47   6.4.1.Unit  Testing5
  48   6.4.2.Comp onent Inte gration an d Systems  Testing (C I/ST)5
  49   6.4.3.Func tional Tes ting5
  50   6.4.4.Regr ession Tes ting5
  51   6.4.5.Sect ion 508 Co mpliance T esting5
  52   7.Document ation Reme diation5
  53   7.1.User G uides6
  54   7.2.Instal lation Gui des6
  55   7.3.Techni cal Manual s6
  56   7.4.Operat ions Manua ls6
  57   8.Project  Reporting6
  58   9.Project  Schedule6
  59   10.Deploym ent6
  60   11.Sustain ment Requi rements6
  61   12.Mainten ance and K nowledge T ransfer7
  62   Appendix A :XINDEX Li sting for  MUMPS Code  Changes8
  63   Appendix B :Source Co de Changes 9
  64  
  65  
  66  
  67   Introducti on
  68   The Depart ment of Ve terans Aff airs (VA)  currently  utilizes t he Veteran s Health I nformation  Systems a nd Technol ogy Archit ecture (Vi stA) suite  of applic ations to  provide cl inical, fi nancial, i nfrastruct ure, and m anagement  tools. The  process o f advancin g “Class 3 ” field-de veloped Vi stA softwa re to “Cla ss 1” nati onally-dis tributed s tatus is r eferred to  as the Ex isting Pro duct Intak e Program  (EPIP). Th e VA’s goa l is to su pplement o ngoing act ivities as sociated w ith evalua ting and a dvancing f ield-devel oped softw are to a s tate that  meets nati onal stand ards and f acilitates  release f or Veteran s Health A dministrat ion (VHA)- wide use.
  69   Purpose
  70   The purpos e of this  document i s to fully  describe  the remedi ation plan  to be use d for the  successful  remediati on of the  intake pro duct code  to be depl oyed as pa tch GMRC*3 .0*89. Thi s patch ad dresses th e followin g NSRs:
  71   NSR2008031 2 Post-Hoc  Consult/C losure Not e Associat ion Tool
  72   This NSR h as been im plemented  locally at  the VA Me dical Cent er in San  Francisco  CA.
  73   NSR2015100 5 Print Ve terans Cel l Phone Nu mber and A ge on Cons ult Form
  74   This NSR h as been im plemented  locally at  the VA Me dical Cent er in Milw aukee WI.
  75   NSR2015100 2 Secondar y Consult  Service Pr inters
  76   This NSR h as been im plemented  locally at  the VA Me dical Cent ers in Hou ston TX an d Hines IL .
  77   Patch Desc ription
  78   GMRC*3.0*8 9 provides  the follo wing enhan cements to  VistA:
  79   Improves t he process  of managi ng pending  consults  by providi ng a Consu lt Closure  Tool that  identifie s consult  requests t hat are in correctly  left in Pe nding stat us and eff iciently c loses out  those cons ults. Curr ent VistA  tools prov ide lists  of patient s with pen ding consu lts, but d o not prov ide the ab ility to a ct on thos e lists di rectly. Th e use of n on-consult  class Tex t Integrat ion Utilit y (TIU) no tes, dupli cate consu lt request s, and oth er workaro und option s to close  out consu lt request s leads to  errors in  consult c ompletion  rates and  creates re dundant wo rk during  consult cl ean-up act ions. Curr ently, the  ‘administ rative com pletion’ o ption in t he Compute rized Pati ent Record  System (C PRS) is th e only met hod for cl osing out  completed  consults w ith incorr ect note t itles. 
  80   This modif ication ad ds a new o ption [GMR C CONSULT  CLOSURE TO OL] to the  VistA Con sult Manag ement [GMR C MGR] men u. The Con sult Closu re Tool me nu provide s Edit Con figuration  and Run C onfigurati on options .
  81   The Edit C onfigurati on option  is used to  create or  edit a co nsult clos ure Config uration fo r a specif ied CPRS T eam. The C onfigurati on consist s of searc h paramete rs—includi ng Clinic,  Procedure , Service,  and Order  Item—to b e used in  finding pe nding cons ults, as w ell as a l ist of exi sting TIU  notes to b e used to  close out  the consul ts. The Ru n Configur ation opti on can the n be used  to: 1.) ge nerate a p rinted lis t of patie nts with p ending con sults that  meet the  parameters  specified  in the Co nfiguratio n and popu late the T eam list i n CPRS, or  2.) immed iately res olve and c lose each  of the pen ding consu lts by sel ecting a T IU note to  associate  with it.
  82   Provides a  veteran’s  cell phon e number a nd age (fr om the PAT IENT file  (#2)) on t he Consult ation Form  (SF-513)  in CPRS. M any vetera ns do not  have a hom e phone nu mber, so a  cell phon e number i s vital in formation  if it is t he primary  contact n umber. Pri nting a ve teran’s ag e on the f orm elimin ates the c hance of a  math erro r being ma de by the  provider w hen consid ering trea tment opti ons that a re reliant  on age.
  83   Enables a  Consultati on Form (S F-513) to  be simulta neously pr inted to p rinters at  two diffe rent locat ions by ad ding a SEC ONDARY PRI NTER field  (#689) to  the REQUE ST SERVICE S file (#1 23.5). The  modificat ion allows  both serv ices to be  notified  of a new c onsult at  the same t ime, allow ing repres entatives  at both lo cations to  begin the ir reviews  concurren tly.
  84   Needs and  Requiremen ts
  85   The Needs  and Requir ements for  the NSRs  addressed  in this re mediation  are: 
  86   NSR2008031 2 Post-Hoc  Consult/C losure Not e Associat ion Tool:
  87   NEED 38670 5: Post HO C - Pendin g Consults  Managemen t - For Us ers of con sult packa ge who nee d to manag e pending  consults t he automat ion of the  process o f reviewin g and clos ing pendin g consults  using an  interactiv e tool tha t displays  a list of  pending c onsults, a ssociated  appointmen ts, and as sociated p rogress no te.
  88   REQUIREMEN T 396002:  Create act ionable pa tient list s - As a u ser involv ed in clos ing pendin g consults  I need to  be able t o create a ctionable  lists by c onfiguring  such item s as maxim um number  of days be tween the  consult an d the appo intment, m aximum num ber of day s between  the appoin tment and  the note,  and speci.  (sic)
  89   NSR 201510 05 Print V eterans Ce ll Phone N umber and  Age on Con sult Form:
  90   NEED 63473 1: View Ve teran's Ce ll Phone N umber on t he Printed  Consult F orm - As a  user of c onsults I  need to be  able to v iew the Ve teran's ce ll phone n umber on t he printed  Consult F orm, along  with the  currently  displayed  contact in formation,  so that I  can conta ct the Vet eran using  informati on printed  in the he ader and n ot delay c are.
  91   NEED 63473 2: View th e Veteran' s Age on t he Printed  Consult F orm - As a  user of c onsults I  need to be  able to v iew the Ve teran's ag e on the p rinted con sult form  so that I  do not hav e to calcu late the a ge from th e date of  birth for  the age de pendent pr otocols of  some proc edures.
  92   NSR2015100 2 Secondar y Consult  Service Pr inters:
  93   NEED 62108 4: Print C onsult At  Two Locati ons - As a  provider  who reques ts consult s I would  like consu lts that r equire two  different  services  to review  and approv e to print  on.
  94   Points of  Contact
  95   The VA Poi nt of Cont act (POC)  for NSR200 80312 Post -Hoc Consu lt/Closure  Note Asso ciation To ol is 
  96   The VA POC  for NSR 2 0151005 Pr int Vetera ns Cell Ph one Number  and Age o n Consult  Form is 
  97   The VA POC  for NSR20 151002 Sec ondary Con sult Servi ce Printer s is  Code   Re m e d i a
ti
o n
       
  98   Leidos wil l review a nd analyze  the intak e product  code for c ompliance  with codin g standard s, pointer s, shared  tables, de pendencies , and any  interferen ce with Vi stA system s.
  99   Standards  and Conven tions
  100   Leidos wil l referenc e the 
website fo r applicab le documen ts and wil l adhere t o VA stand ards to co mplete the  analysis  of this in take produ ct. The ou tput of th e VA XINDE X utility  will be us ed to anal yze the MU MPS source  code and  document t he affecte d routines  (see Appe ndix A).
  101   The MUMPS  coding sta ndards web site http: //71.174.6 2.16/Demo/ AnnoStd wi ll also be  used to e nsure that  the remed iated code  conforms  to VA stan dards.
  102   Review and  Analysis
  103   Review and  analysis  of this in take produ ct involve s two part s: 1) veri fication t hat the so urce code  changes sp ecified in  this docu ment provi de the des ired effec t, and 2)  verificati on that th e source c ode change s do not a dversely a ffect any  other Vist A or CPRS  functional ity. 
  104   Testing wi ll be perf ormed to v alidate th at the int ended effe ct of thes e products  is implem ented, and  that no o ther VistA  or CPRS G raphical U ser Interf ace (GUI)  functional ity is adv ersely aff ected. 
  105   Coding Cha nges
  106   The coding  changes r equired fo r NSR20080 312 Post-H oc Consult /Closure N ote Associ ation Tool  are in th e followin g MUMPS ro utines: 
  107   Modified r outines: N one
  108   New routin es: GMRCCA , GMRCCB,  GMRCCC, GM RCCD, GMRC CX, GMRCCY
  109   The coding  changes r equired fo r NSR 2015 1005 Print  Veterans  Cell Phone  Number an d Age on C onsult For m are in t he followi ng MUMPS r outines: 
  110   Modified r outines: G MRCP5D
  111   New routin es: None
  112   The coding  changes r equired fo r NSR20151 002 Second ary Consul t Service  Printers a re in the  following  MUMPS rout ines: 
  113   Modified r outines: G MRCUTL1
  114   New routin es: GMRCZU TL
  115   A detailed  analysis  of the cod ing change s is provi ded in App endix B.
  116   Testing
  117   Leidos wil l perform  all testin g-related  activities  to ensure  that the  remediated  code meet s the expe ctations o f the VA b usiness ow ner.
  118   Test Plan
  119   Leidos wil l configur e the test  environme nt, provid e code mod ifications  and end-t o-end test ing, and d eliver app licable te sting docu mentation,  following  Veteran-f ocused Int egration P rocess (VI P) guideli nes.
  120   The Leidos  developer  will modi fy the sof tware purs uant to th e VA stand ards defin ed in the  Standards  and Conven tions sect ion of thi s document , and will  conduct f ull unit t esting of  the functi onality an d verify p erformance  of all so ftware cod e before i t is relea sed to Lei dos SQA. S QA will th en perform  all appli cable test ing types  as describ ed in the  Testing Ph ases secti on of this  document.  The devel oper and S QA will re solve prob lems and a ddress iss ues as the y arise du ring testi ng and wil l document  issues us ing the Ra tional Tea m Concert  (RTC) defe ct trackin g tool.
  121   Test Envir onment
  122   Within fiv e working  days of ap proval of  this Remed iation Pla n, the dev eloper wil l configur e the deve lopment/te st environ ment on an  Austin In formation  Technology  Center (A ITC) serve r or other  VA-approv ed develop ment/test  environmen t used for  this inta ke product  and insta ll the rem ediated Ke rnel Insta llation an d Distribu tion Syste m (KIDS) b uild. The  environmen t will be  restored t o its orig inal basel ine state  by the Vis tA system  administra tor after  developmen t testing  is complet ed, follow ed by inst allation o f the reme diated sof tware.
  123   Upon notif ication fr om the dev eloper of  test envir onment rea diness, SQ A will com mence with  planned t esting act ivities. T he SQA tes t executio n and repo rting docu mentation  will resid e in the R ational Qu ality Mana ger (RQM)  “EPIP” Pro ject. In o rder to pe rform test ing of thi s VistA mo dification , the foll owing tool s will be  leveraged:  RQM, Refl ections em ulator, CP RS GUI v31  (1.0.30.7 5), and Sn agIt.
  124   Test Readi ness Revie w
  125   Leidos wil l conduct  a Test Rea diness Rev iew (TRR)  at the con clusion of  unit test ing to ver ify the co ntents of  the softwa re to be t ested, the  test sche dule, test  environme nts, test  participan ts, and as sociated l ogistics.  Leidos wil l provide  an agenda  prior to t he TRR and  written m inutes aft er complet ion of the  TRR, in a ccordance  with the P erformance  Work Stat ement (PWS ).
  126   Testing Ph ases
  127   Leidos wil l perform  developmen t and SQA  testing ac tivities i n phases,  and will p rovide all  required  testing do cumentatio n.
  128   Unit Testi ng
  129   The develo per will c onduct uni t testing  of individ ual units  of source  code to de termine if  they are  fit for us e. 
  130   Component  Integratio n and Syst ems Testin g (CI/ST)
  131   Component  integratio n and syst ems testin g will be  conducted  by SQA to  ensure tha t connecti vity to th e VistA ap plication  exists and  is functi oning norm ally. SQA  will recor d Passed/F ailed outc omes and c apture dis played con tent to do cument the  system te sting effo rt.
  132   Functional  Testing
  133   Functional  testing w ill be per formed by  SQA to tes t the code  modificat ions. This  testing w ill ensure  that the  software f unctionali ty is in a lignment w ith the Go vernment F urnished I nformation . SQA will  record Pa ssed/Faile d outcomes  and captu re display ed content  to docume nt the fun ctional te sting effo rt. 
  134   Regression  Testing
  135   Regression  testing w ill be per formed by  SQA to ens ure that t he remedia ted code d oes not in troduce er rors to ex isting fun ctionality . The regr ession tes t framewor k will be  kept up-to -date with  manual te st cases a nd test sc ripts defi ning the i nputs and  expected o utcomes. S QA will re cord Passe d/Failed o utcomes an d capture  displayed  content to  document  the regres sion testi ng effort.  
  136   Section 50 8 Complian ce Testing
  137   Section 50 8 testing  will be pe rformed on  VistA and  CPRS code  when new  CPRS GUI c hanges are  introduce d by the d eveloper.  The VA-rec ommended A ssistive T echnology  tool, JAWS , will be  used to co nduct the  508 testin g. Test re sults and  related do cumentatio n will be  submitted  to the VA  Section 50 8 team in  accordance  with the  VA 508 tes ting requi rements. D efects fou nd during  testing wi ll be asse ssed and r emediated  by the dev eloper.
  138   Documentat ion Remedi ation
  139   Leidos wil l review e xisting VA  documenta tion for p ossible im pact as a  result of  this remed iation eff ort, and w ill make u pdates whe re applica ble.
  140   To determi ne the exi sting VA d ocumentati on that re quires mod ification,  Leidos wi ll conduct  a thoroug h review o f the docu ments curr ently avai lable from  the VA So ftware Doc ument Libr ary (VDL)  located at  
Keyword se arches usi ng terms r elevant to  this reme diation ef fort will  be used to  identify  documents  that might  be impact ed; those  documents  were will  then be re viewed in  their enti rety for a ny needed  revisions.
  141   The follow ing sectio ns outline  the VDL d ocuments t o be revis ed for thi s remediat ion, as we ll as the  Release No tes to be  provided b y Leidos.
  142   User Guide s
  143   The follow ing User G uide will  be updated  in the VD L:
  144   Consult/Re quest Trac king User  Manual Ver sion 3.0 
  145   Installati on Guides
  146   The Nation al Patch M odule Patc h Descript ion docume nt for thi s remediat ion will p rovide the  procedure  for insta lling KIDS  packages  migrated f rom the te st environ ment to th e VA Pre-P roduction  environmen ts. Theref ore, no In stallation  Guides wi ll be upda ted.
  147   Technical  Manuals
  148   The follow ing Techni cal Manual  will be u pdated in  the VDL:
  149   Consult/Re quest Trac king Techn ical Manua l Version  3.0
  150   Operations  Manuals
  151   No Operati ons Manual s require  revision a s a result  of this m odificatio n.
  152   Project Re porting
  153   Leidos wil l provide  interim pr ogress upd ates durin g daily Sc rum calls  and weekly  managemen t calls wi th VA repr esentative s. 
  154   Project Sc hedule
  155   Leidos wil l follow t he Scrum A gile metho dology for  software  developmen t. It is a nticipated  that this  patch wil l require  five 2-wee k sprints.
  156   Deployment
  157   Leidos wil l create a  KIDS pack age contai ning the s oftware ch anges nece ssary to f ulfill the  requireme nts for th is remedia tion effor t. A KIDS  package, a long with  all relate d document ation, wil l be deliv ered to th e Contract ing Office  Represent ative (COR ) for acce ptance. If  accepted,  the KIDS  package ca n then be  released f or nationa l VA consu mption; ot herwise, L eidos will  correct a ny defects  found and  repeat th e necessar y remediat ion activi ties.
  158   Sustainmen t Requirem ents
  159   Leidos wil l provide  maintenanc e support  for 60 day s to the V A to suppo rt the fin al Class 1  product a fter it is  nationall y released .  
  160   Maintenanc e and Know ledge Tran sfer
  161   To facilit ate contin uous proce ss improve ment, Leid os will de liver Spri nt Review  and Retros pective sl ides and a  Lessons L earned Rep ort to VA  upon compl etion of t he final s print.
  162   XINDEX Lis ting for M UMPS Code  Changes
  163   The XINDEX  tool is t he standar d tool use d by the V A to analy ze MUMPS s ource code . Followin g is a lis ting of th e results  of the XIN DEX analys is of the  affected r outines.
  164  
  165  
  166                       V . A.  C R  O S S  R E  F E R E N  C E R  7. 3
  167                            [2008 V A Standard s & Conven tions]
  168                      UC I: VISTA C PU: ROU     Mar 15, 2 017@11:37: 32
  169   Routines:  9  Faux Ro utines: 0
  170  
  171   GMRCCA     GMRCCB     GMRCCC     GMRCCD     GMRCCX     GMRCCY     GMRCP5D    GMRCUTL1  
  172   GMRCZUTL  
  173  
  174   --- CROSS  REFERENCIN G ---
  175  
  176      Press r eturn to c ontinue:
  177  
  178   Compiled l ist of Err ors and Wa rnings                Mar 15, 20 17@11:37:3 2 page 1
  179   No errors  or warning s to repor t
  180  
  181  
  182   --- END -- -
  183  
  184  
  185   Source Cod e Changes
  186   This appen dix displa ys the Vis tA code be fore and a fter the u pdates req uired for  this code  modificati on were im plemented.  The follo wing routi nes were a ffected:
  187   Modified r outines: G MRCP5D, GM RCUTL1
  188   New routin es: GMRCCA , GMRCCB,  GMRCCC, GM RCCD, GMRC CX, GMRCCY , GMRCZUTL
  189   GMRCP5D
  190   Before:
  191   GMRCP5D ;S LC/DCM,RJS ,JFR,WAT,D EH - Print  Consult f orm 513 (G ather Data  - Addendu ms, Header s, Service  reports a nd Comment s) ;03/18/ 09  15:00
  192    ;;3.0;CON SULT/REQUE ST TRACKIN G;**4,12,1 5,22,29,35 ,38,61,65, 66,82**;De c 27, 1997 ;Build 11
  193    ;This rou tine invok es the fol lowing ICR (s):
  194    ;2056 $$G ET1^DIQ, 2 541 $$KSP^ XUPARAM, 1 0103 $$FMT E^XLFDT, 1 0104 $$UP^ XLFSTR, 10 061 VADPT  API
  195    ;10040 ^S C(, 4156 $ $CVEDT^DGC V
  196    ;
  197   FORMAT(GMR CIFN,GMRCR D,PAGEWID)  ;
  198    ;
  199    I $L($P(G MRCRD,U,15 )) D
  200    .I $O(^TM P("GMRCR", $J,"MCAR", 0)) D
  201    ..N GMRCS VC
  202    ..S GMRCS VC=$P($G(^ GMR(123.5, +$P(GMRCRD ,U,5),0)), U,1)
  203    ..S:$L(GM RCSVC) GMR CSVC=GMRCS VC_" "
  204    ..;
  205    ..; Medic ine Result s?
  206    ..S GMRCR 0=0 F  S G MRCR0=$O(^ TMP("GMRCR ",$J,"MCAR ",GMRCR0))  Q:'GMRCR0   D
  207    ...D SUB( "H","SREP" ,GMRCR0,$$ CENTER(GMR CSVC_"Serv ice Report  #"_GMRCR0 _" continu ed."))
  208    ...D SUB( "H","SREP" ,GMRCR0,"  ")
  209    ...D BLD( "SREP",GMR CR0,1,0,$$ CENTER("Me dicine Pac kage Repor t"))
  210    ...D BLD( "SREP",GMR CR0,1,0,"" )
  211    ...N LN
  212    ...S LN=0  F  S LN=$ O(^TMP("GM RCR",$J,"M CAR",GMRCR 0,LN)) Q:' LN  D
  213    ....D BLD ("SREP",GM RCR0,1,0,$ G(^TMP("GM RCR",$J,"M CAR",GMRCR 0,LN,0)))
  214    ;
  215    ; Build P rocessing  Activities
  216    S GMRCR0= 0 F  S GMR CR0=$O(^GM R(123,GMRC IFN,40,GMR CR0)) Q:'G MRCR0  D
  217    .N GMRCR1 ,GMRC400,C MT,USER,GM RCDT,RPRV, GMRC402,GM RCISIT
  218    .S GMRCR1 =+$O(^GMR( 123,GMRCIF N,40,GMRCR 0,0)) Q:GM RCR1'=1
  219    .S GMRC40 0=$G(^GMR( 123,GMRCIF N,40,GMRCR 0,0))
  220    .S GMRC40 2=$G(^GMR( 123,GMRCIF N,40,GMRCR 0,2))
  221    .S CMT=$$ PRCMT^GMRC P5B(+$P(GM RC400,U,2) ) Q:'$L(CM T)
  222    .S GMRCDT =$P(GMRC40 0,U,3) S:' GMRCDT GMR CDT=$P(GMR C400,U,1)
  223    .S GMRCDT =$$EXDT(GM RCDT)_" "_ $P(GMRC402 ,U,3)
  224    .;Followi ng lines m odified in  patch *38
  225    .;I $P(^G MR(123,GMR CIFN,0),U, 23) D  ;co mmented ou t
  226    .;.S GMRC ISIT=$$GET 1^DIQ(4,$P (^GMR(123, GMRCIFN,0) ,U,23),.01 )  ;commen ted out
  227    .;.S GMRC ISIT="Ente red at: "_ GMRCISIT   ;commented  out
  228    .I $L(GMR C402) D  ; ADDED
  229    ..S GMRCI SIT=$$GET1 ^DIQ(123,G MRCIFN,.07 )  ;ADDED
  230    .I '$D(GM RCISIT) D   ;ADDED
  231    ..S GMRCI SIT=$$KSP^ XUPARAM("I NST")  ;AD DED
  232    ..I GMRCI SIT'="" S  GMRCISIT=$ $GET1^DIQ( 4,GMRCISIT ,.01)  ;AD DED
  233    ..I GMRCI SIT="" S G MRCISIT=$$ GET1^DIQ(1 23,GMRCIFN ,.05)  ;AD DED
  234    .S GMRCIS IT="Entere d at: "_GM RCISIT  ;A DDED
  235    .;End of  modificati ons for pa tch *38
  236    .S RPRV=$ $GET1^DIQ( 200,+$P(GM RC400,U,4) ,.01)
  237    .I '$L(RP RV) S RPRV =$P(GMRC40 2,U,2)
  238    .S:($L(RP RV)) RPRV= "Responsib le Person:  "_RPRV
  239    .S USER=$ $GET1^DIQ( 200,+$P(GM RC400,U,5) ,.01)
  240    .I '$L(US ER) S USER =$P(GMRC40 2,U)
  241    .S USER=" Entered by : "_USER_"  - "_GMRCD T
  242    .D SUB("H ","COM",GM RCR0,CMT_"  Comment ( "_USER_")  continued. ")
  243    .D SUB("H ","COM",GM RCR0," ")
  244    .D BLD("C OM",GMRCR0 ,1,0,"")
  245    .D BLD("C OM",GMRCR0 ,1,0,$$CEN TER("("_CM T_" Commen t)"))
  246    .I $P(GMR C400,U,2)= 17!($P(GMR C400,U,2)= 25) D
  247    .. N FWDL N,FWDRS
  248    .. S FWDL N="Forward ed from: "
  249    .. S FWDR S=$P($G(^G MR(123,GMR CIFN,40,GM RCR0,3)),U )
  250    .. I $L(F WDRS) S FW DLN=FWDLN_ FWDRS
  251    .. I '$L( FWDRS) S F WDLN=FWDLN _$$GET1^DI Q(123.5,+$ P(GMRC400, U,6),.01)
  252    .. D BLD( "COM",GMRC R0,1,5,FWD LN)
  253    .D BLD("C OM",GMRCR0 ,1,5,USER)
  254    .D:($L(RP RV)) BLD(" COM",GMRCR 0,1,5,RPRV )
  255    .D:($L($G (GMRCISIT) )) BLD("CO M",GMRCR0, 1,5,GMRCIS IT)
  256    .;
  257    .N GMRCR2  S GMRCR2= 0
  258    .F  S GMR CR2=$O(^GM R(123,GMRC IFN,40,GMR CR0,GMRCR1 ,GMRCR2))  Q:'GMRCR2   D
  259    ..D BLD(" COM",GMRCR 0,1,0,$G(^ GMR(123,GM RCIFN,40,G MRCR0,GMRC R1,GMRCR2, 0)))
  260    ;
  261    Q
  262    ;
  263   ADDEND(GMR CIFN,GMRCR 0,GMRCNDX, GMRCRD,PAG EWID) ;
  264    ;
  265    N GMRCADD ,GMRCNDX,G MRCR1,GMRC V,TEXT,GMR CX
  266    ;
  267    S GMRCADD =0 F  S GM RCADD=$O(^ TMP("GMRCR ",$J,"RES" ,GMRCR0,"A DD",GMRCAD D)) Q:'GMR CADD  D
  268    .N GMRCSG NM,GMRCNMD T,GMRCTIT, GMRCMODE,G MRCCSDT,GM RCCTIT,GMR CCSGM
  269    .;
  270    .F GMRCV= "GMRCSGNM" ,"GMRCNMDT ","GMRCTIT ","GMRCMOD E" D
  271    ..S @GMRC V=$G(^TMP( "GMRCR",$J ,"RES",GMR CR0,"ADD", GMRCADD,GM RCV))
  272    .;
  273    . F GMRCV ="GMRCCSDT ","GMRCCTI T","GMRCCS GM","GMRCC SIG" D
  274    .. S @GMR CV=$G(^TMP ("GMRCR",$ J,"RES",GM RCR0,"ADD" ,GMRCADD,G MRCV))
  275    .S GMRCND X=$O(^TMP( "GMRC",$J, "OUTPUT"," RES"," "), -1)+1
  276    .I $L($G( GMRCRPT))  D SUB("H", "RES",GMRC NDX,"Adden dum #"_GMR CADD_" To  Consult No te #"_GMRC R0_" for " _GMRCRPT_"  continued .")
  277    .I '$L($G (GMRCRPT))  D SUB("H" ,"RES",GMR CNDX,"Adde ndum #"_GM RCADD_" To  Consult N ote #"_GMR CR0_" cont inued.")
  278    .D SUB("H ","RES",GM RCNDX," ")
  279    .I $L($G( GMRCSGNM))  D
  280    ..D SUB(" F","RES",G MRCNDX," " )
  281    ..I (GMRC MODE="elec tronic") S  GMRCX=" A ddendum Si gnature: " _GMRCSGNM_ " /es/ "_$ $EXDT($G(G MRCNMDT))
  282    ..I '(GMR CMODE="ele ctronic")  S GMRCX="  Addendum A uthor: "_G MRCSGNM S: $L($G(GMRC NMDT)) GMR CX=GMRCX_"  Last edit ed: "_$$EX DT(GMRCNMD T)
  283    ..D SUB(" F","RES",G MRCNDX,GMR CX)
  284    ..D:$L($G (GMRCTIT))  SUB("F"," RES",GMRCN DX,"                       "_GMR CTIT)
  285    .I $L($G( GMRCCSDT))  D
  286    ..D SUB(" F","RES",G MRCNDX," " )
  287    ..I (GMRC CSGM="elec tronic") S  GMRCX=" A ddendum Co Signature:  "_GMRCCSI G_" /es/ " _$$EXDT(GM RCCSDT)
  288    ..I '(GMR CCSGM="ele ctronic")  S GMRCX="  Addendum C oSignature : "_GMRCCS IG_" /char t/ "_$$EXD T(GMRCCSDT )
  289    ..D SUB(" F","RES",G MRCNDX,GMR CX)
  290    ..D:$L($G (GMRCCTIT) ) SUB("F", "RES",GMRC NDX,"                         "_ GMRCCTIT)
  291    .D BLD("R ES",GMRCND X,1,0," ")
  292    .I $L($G( GMRCRPT))  D BLD("RES ",GMRCNDX, 1,0,$$CENT ER("ADDEND UM #"_GMRC ADD_" TO C ONSULT NOT E #"_GMRCR 0_" FOR "_ GMRCRPT))
  293    .I '$L($G (GMRCRPT))  D BLD("RE S",GMRCNDX ,1,0,$$CEN TER("ADDEN DUM #"_GMR CADD_" TO  CONSULT NO TE #"_GMRC R0))
  294    .D BLD("R ES",GMRCND X,1,0," ")
  295    .S GMRCR1 =0 F  S GM RCR1=$O(^T MP("GMRCR" ,$J,"RES", GMRCR0,"AD D",GMRCADD ,GMRCR1))  Q:'GMRCR1   D
  296    ..D BLD(" RES",GMRCN DX,1,0,$G( ^TMP("GMRC R",$J,"RES ",GMRCR0," ADD",GMRCA DD,GMRCR1, 0)))
  297    Q
  298    ;
  299   HDR ; Head er code fo r form 513
  300    ;GMRCPEL    ext fmt  Primary El igibiity C ode
  301    ;GMRCELIG   ext fmt  of Patient  Type defi ned @ FORM AT^GMRCP5A
  302    ;CVELIG     marker t o indicate  if pt has  active pr eference f or Combat  Veteran El igibility  status
  303    ;get and  format eli gibility i nfo
  304    N VAEL,VA PA,GMRCPEL ,SUB,GMRCF ROM
  305    N CVELIG  ;WAT
  306    D ELIG^VA DPT
  307    D ADD^VAD PT
  308    N VASV,OE FOIF D SVC ^VADPT S:( VASV(11)>0 )!(VASV(12 )>0)!(VASV (13)>0) OE FOIF="OEF/ OIF" ;WAT  66
  309    S GMRCPEL =$P(VAEL(1 ),U,2)
  310    I $L($G(G MRCELIG))   D
  311    .;if TYPE  is Active  Duty and  VETERAN Y/ N? is No,  then call  the pt Act ive Duty
  312    .S:$P(VAE L(6),U,1)= 5&(VAEL(4) =0) GMRCEL IG=$P(VAEL (6),U,2)
  313    F SUB=0,1  D
  314    .N GMRCFL N
  315    .S GMRCFL N=$P($G(^D PT(GMRCDFN ,0)),U,1)
  316    .S CVELIG =$$CVEDT^D GCV(GMRCDF N) S:$P($G (CVELIG),U ,3) CVELIG ="CV ELIGI BLE" ;WAT
  317    .D BLD("H DR",SUB,1, 0,GMRCDVL)
  318    .D BLD("H DR",SUB,1, 6,"MEDICAL  RECORD")
  319    .D BLD("H DR",SUB,0, 39,"|")
  320    .D BLD("H DR",SUB,0, 45,"CONSUL TATION SHE ET")
  321    .D BLD("H DR",SUB,1, 0,GMRCDVL)
  322    .D BLD("H DR",SUB,1, 0,GMRCFLN)
  323    .D BLD("H DR",SUB,0, 45,GMRCPEL )
  324    .D BLD("H DR",SUB,1, 0,"XXX-XX- "_$P(GMRCS N,"-",3))
  325    .D BLD("H DR",SUB,0, 16,$$EXDT( GMRCDOB))
  326    .D BLD("H DR",SUB,0, 45,GMRCELI G)
  327    .D:$G(CVE LIG)["CV"  BLD("HDR", SUB,1,45,C VELIG)
  328    .D:$G(OEF OIF)="OEF/ OIF" BLD(" HDR",SUB,1 ,45,OEFOIF ) ;WAT 66
  329    ;
  330    ;                                     ADDR ESS LINES  1-3
  331    F GMRCX=1 ,2,3 D:$L( VAPA(GMRCX ))
  332    .D BLD("H DR",0,1,0, VAPA(GMRCX ))
  333    .;I GMRCX =1 D BLD(" HDR",0,0,5 1,"Standar d Form 513  (Rev 9-77 )")
  334    ;
  335    ;          CITY               S TATE                  ZIP CODE
  336    S GMRCX=V APA(4)_"    "_$P(VAPA (5),U,2)_"       "_VA PA(6)
  337    ;
  338    I $L(VAPA (8)) S GMR CX=GMRCX_"       Phon e: "_VAPA( 8)   ; TEL EPHONE (IF  AVAILABLE )
  339    ;
  340    D BLD("HD R",0,1,0,G MRCX)
  341    D BLD("HD R",0,1,0,G MRCDVL)
  342    D BLD("HD R",0,1,0," Consult Re quest: "_$ $CONSRQ(GM RCIFN))
  343    D BLD("HD R",0,1,55, "|Consult  No.: "_GMR CIFN)
  344    ;
  345    D BLD("HD R",1,1,0,G MRCEQL)
  346    D BLD("HD R",0,1,0,G MRCDVL)
  347    ;
  348    I $G(CMT)  D BLD("HD R",0,1,27, "("_$$PRCM T^GMRCP5B( CMT)_")")  Q
  349    ;
  350    S GMRCFRO M=$P($G(^S C(+$P(GMRC RD,U,6),0) ),U,1)
  351    ;
  352    I '$L(GMR CFROM) D
  353    .N VAIN
  354    .D INP^VA DPT
  355    .S GMRCFR OM=$P($G(V AIN(4)),U, 2)
  356    .I $L($G( VAIN(5)))  S GMRCFROM =GMRCFROM_ " (Rm/Bd:  "_$G(VAIN( 5))_" )"
  357    ;No locat ion, IFC -  consultin g site
  358    I '$L(GMR CFROM),$P( GMRCRD,U,2 3),$P($G(G MRCRD(12)) ,U,5)="F"  D
  359    .I $P(GMR CRD,U,21)  S GMRCFROM =$$GET1^DI Q(4,$P(GMR CRD,U,21), .01)
  360    .E  S GMR CFROM=$$GE T1^DIQ(4,$ P(GMRCRD,U ,23),.01)
  361    ;
  362    D BLD("HD R",0,1,0," To: "_$P($ G(^GMR(123 .5,+$P(GMR CRD,U,5),0 )),U,1))
  363    D BLD("HD R",0,1,5," From: "_GM RCFROM)
  364    D BLD("HD R",0,0,49, "|Requeste d: "_$$EXD T($P(GMRCR D,U,7)))
  365    ;
  366    D BLD("HD R",0,1,0,G MRCDVL)
  367    D BLD("HD R",0,1,0," Requesting  Facility:  "_$E(GMRC FAC,1,22))
  368    I $P(GMRC RD,U,11) D  BLD("HDR" ,0,0,45,"| ATTENTION:  "_$E($$GE T1^DIQ(200 ,+$P(GMRCR D,U,11),.0 1),1,21))
  369    I $P(GMRC RD,U,23) D
  370    . D BLD(" HDR",0,1,0 ,"Remote C onsult No. : "_GMRCIN O)
  371    . D BLD(" HDR",0,1,0 ,"Role: "_ GMRCIRL)
  372    D BLD("HD R",0,1,0,G MRCEQL)
  373    ;
  374    D KVAR^VA DPT ;WAT 6 6
  375    Q
  376    ;
  377   CENTER(X)  ;
  378    ;
  379    N TEXT,CO L
  380    S COL=35- ($L(X)\2)  Q:(COL<1)  X
  381    S $E(TEXT ,COL)=X
  382    Q TEXT
  383    ;
  384   BLD(SUB,ND X,LINE,TAB ,TEXT,RUNT IME) ;
  385    ;
  386    Q:'$L($G( SUB))
  387    N LINECNT
  388    ;
  389    F LINECNT =1:1:+LINE  S ^TMP("G MRC",$J,"O UTPUT",SUB ,NDX,$$LAS TLN(SUB,ND X)+1,0)=""
  390    ;
  391    S $E(^TMP ("GMRC",$J ,"OUTPUT", SUB,NDX,$$ LASTLN(SUB ,NDX),0),T AB+1)=TEXT
  392    I $L($G(R UNTIME)) S  ^TMP("GMR C",$J,"OUT PUT",SUB,N DX,$$LASTL N(SUB,NDX) ,1)=RUNTIM E
  393    ;
  394    S GMRCLAS T=SUB
  395    Q
  396    ;
  397   SUB(ZONE,S UB,NDX,TEX T) ;
  398    ;
  399    N NEXT
  400    S NEXT=$O (^TMP("GMR C",$J,"OUT PUT",SUB,N DX,ZONE,"  "),-1)+1
  401    S ^TMP("G MRC",$J,"O UTPUT",SUB ,NDX,ZONE, NEXT,0)=TE XT
  402    Q
  403    ;
  404   LASTLN(SUB ,NDX) ;
  405    Q +$O(^TM P("GMRC",$ J,"OUTPUT" ,SUB,NDX,"  "),-1)
  406    ;
  407   CONSRQ(IFN ) ;
  408    ;
  409    N PTR,LIN K,REF,GMRC RQ
  410    I +$P(^GM R(123,+IFN ,0),U,8) D
  411    . S GMRCR Q=$P(^GMR( 123,+IFN,0 ),U,8)
  412    . S GMRCR Q=$$GET1^D IQ(123.3,+ GMRCRQ,.01 )
  413    . I '$L(G MRCRQ) S G MRCRQ="Pro cedure"
  414    I $L($G(G MRCRQ)) Q  GMRCRQ
  415    I $L($G(^ GMR(123,IF N,1.11)))  D
  416    . N SERV, TYPE
  417    . S SERV= $$UP^XLFST R($$GET1^D IQ(123.5,$ P(^GMR(123 ,IFN,0),U, 5),.01))
  418    . S TYPE= $$UP^XLFST R(^GMR(123 ,IFN,1.11) ) I TYPE'= SERV D
  419    . I TYPE' =SERV S GM RCRQ=$E(^G MR(123,IFN ,1.11),1,3 6)
  420    Q:$L($G(G MRCRQ)) GM RCRQ Q "Co nsult"
  421    ;
  422   EXDT(X) ;E XTERNAL DA TE FORMAT
  423    ;
  424    N DATE,TI ME,HR,MN,P D,Y,%DT
  425    Q:'$L(X)  ""
  426    I '(X?7N. 1".".6N) S  %DT="PTS"  D ^%DT S  X=Y
  427    Q $$FMTE^ XLFDT(X,"5 PMZ")
  428    ;
  429   After:
  430   GMRCP5D ;S LC/DCM,RJS ,JFR,WAT,D EH - Print  Consult f orm 513 (G ather Data  - Addendu ms, Header s, Service  reports a nd Comment s) ;01/20/ 17 15:19
  431    ;;3.0;CON SULT/REQUE ST TRACKIN G;**4,12,1 5,22,29,35 ,38,61,65, 66,82,89** ;Dec 27, 1 997;Build  11
  432    ;Waiver # 301965 sub mitted 201 4.02.02,pe nding as o f 2015.05. 05/JDT
  433    ; MILW/RH /JDT 9/09  HDR+26,+27  concanten ated age t o DOB
  434    ; MILW/JD T HDR+41 a dd cell ph one to hea der
  435    ; WLE add ed Cell ph one and ag e to SF513
  436    ;This rou tine invok es the fol lowing ICR (s):
  437    ;2056 $$G ET1^DIQ, 2 541 $$KSP^ XUPARAM, 1 0103 $$FMT E^XLFDT, 1 0104 $$UP^ XLFSTR, 10 061 VADPT  API
  438    ;10040 ^S C(, 4156 $ $CVEDT^DGC V
  439    ;
  440   FORMAT(GMR CIFN,GMRCR D,PAGEWID)  ;
  441    ;
  442    I $L($P(G MRCRD,U,15 )) D
  443    .I $O(^TM P("GMRCR", $J,"MCAR", 0)) D
  444    ..N GMRCS VC
  445    ..S GMRCS VC=$P($G(^ GMR(123.5, +$P(GMRCRD ,U,5),0)), U,1)
  446    ..S:$L(GM RCSVC) GMR CSVC=GMRCS VC_" "
  447    ..;
  448    ..; Medic ine Result s?
  449    ..S GMRCR 0=0 F  S G MRCR0=$O(^ TMP("GMRCR ",$J,"MCAR ",GMRCR0))  Q:'GMRCR0   D
  450    ...D SUB( "H","SREP" ,GMRCR0,$$ CENTER(GMR CSVC_"Serv ice Report  #"_GMRCR0 _" continu ed."))
  451    ...D SUB( "H","SREP" ,GMRCR0,"  ")
  452    ...D BLD( "SREP",GMR CR0,1,0,$$ CENTER("Me dicine Pac kage Repor t"))
  453    ...D BLD( "SREP",GMR CR0,1,0,"" )
  454    ...N LN
  455    ...S LN=0  F  S LN=$ O(^TMP("GM RCR",$J,"M CAR",GMRCR 0,LN)) Q:' LN  D
  456    ....D BLD ("SREP",GM RCR0,1,0,$ G(^TMP("GM RCR",$J,"M CAR",GMRCR 0,LN,0)))
  457    ;
  458    ; Build P rocessing  Activities
  459    S GMRCR0= 0 F  S GMR CR0=$O(^GM R(123,GMRC IFN,40,GMR CR0)) Q:'G MRCR0  D
  460    .N GMRCR1 ,GMRC400,C MT,USER,GM RCDT,RPRV, GMRC402,GM RCISIT
  461    .S GMRCR1 =+$O(^GMR( 123,GMRCIF N,40,GMRCR 0,0)) Q:GM RCR1'=1
  462    .S GMRC40 0=$G(^GMR( 123,GMRCIF N,40,GMRCR 0,0))
  463    .S GMRC40 2=$G(^GMR( 123,GMRCIF N,40,GMRCR 0,2))
  464    .S CMT=$$ PRCMT^GMRC P5B(+$P(GM RC400,U,2) ) Q:'$L(CM T)
  465    .S GMRCDT =$P(GMRC40 0,U,3) S:' GMRCDT GMR CDT=$P(GMR C400,U,1)
  466    .S GMRCDT =$$EXDT(GM RCDT)_" "_ $P(GMRC402 ,U,3)
  467    .;Followi ng lines m odified in  patch *38
  468    .;I $P(^G MR(123,GMR CIFN,0),U, 23) D  ;co mmented ou t
  469    .;.S GMRC ISIT=$$GET 1^DIQ(4,$P (^GMR(123, GMRCIFN,0) ,U,23),.01 )  ;commen ted out
  470    .;.S GMRC ISIT="Ente red at: "_ GMRCISIT   ;commented  out
  471    .I $L(GMR C402) D  ; ADDED
  472    ..S GMRCI SIT=$$GET1 ^DIQ(123,G MRCIFN,.07 )  ;ADDED
  473    .I '$D(GM RCISIT) D   ;ADDED
  474    ..S GMRCI SIT=$$KSP^ XUPARAM("I NST")  ;AD DED
  475    ..I GMRCI SIT'="" S  GMRCISIT=$ $GET1^DIQ( 4,GMRCISIT ,.01)  ;AD DED
  476    ..I GMRCI SIT="" S G MRCISIT=$$ GET1^DIQ(1 23,GMRCIFN ,.05)  ;AD DED
  477    .S GMRCIS IT="Entere d at: "_GM RCISIT  ;A DDED
  478    .;End of  modificati ons for pa tch *38
  479    .S RPRV=$ $GET1^DIQ( 200,+$P(GM RC400,U,4) ,.01)
  480    .I '$L(RP RV) S RPRV =$P(GMRC40 2,U,2)
  481    .S:($L(RP RV)) RPRV= "Responsib le Person:  "_RPRV
  482    .S USER=$ $GET1^DIQ( 200,+$P(GM RC400,U,5) ,.01)
  483    .I '$L(US ER) S USER =$P(GMRC40 2,U)
  484    .S USER=" Entered by : "_USER_"  - "_GMRCD T
  485    .D SUB("H ","COM",GM RCR0,CMT_"  Comment ( "_USER_")  continued. ")
  486    .D SUB("H ","COM",GM RCR0," ")
  487    .D BLD("C OM",GMRCR0 ,1,0,"")
  488    .D BLD("C OM",GMRCR0 ,1,0,$$CEN TER("("_CM T_" Commen t)"))
  489    .I $P(GMR C400,U,2)= 17!($P(GMR C400,U,2)= 25) D
  490    .. N FWDL N,FWDRS
  491    .. S FWDL N="Forward ed from: "
  492    .. S FWDR S=$P($G(^G MR(123,GMR CIFN,40,GM RCR0,3)),U )
  493    .. I $L(F WDRS) S FW DLN=FWDLN_ FWDRS
  494    .. I '$L( FWDRS) S F WDLN=FWDLN _$$GET1^DI Q(123.5,+$ P(GMRC400, U,6),.01)
  495    .. D BLD( "COM",GMRC R0,1,5,FWD LN)
  496    .D BLD("C OM",GMRCR0 ,1,5,USER)
  497    .D:($L(RP RV)) BLD(" COM",GMRCR 0,1,5,RPRV )
  498    .D:($L($G (GMRCISIT) )) BLD("CO M",GMRCR0, 1,5,GMRCIS IT)
  499    .;
  500    .N GMRCR2  S GMRCR2= 0
  501    .F  S GMR CR2=$O(^GM R(123,GMRC IFN,40,GMR CR0,GMRCR1 ,GMRCR2))  Q:'GMRCR2   D
  502    ..D BLD(" COM",GMRCR 0,1,0,$G(^ GMR(123,GM RCIFN,40,G MRCR0,GMRC R1,GMRCR2, 0)))
  503    ;
  504    Q
  505    ;
  506   ADDEND(GMR CIFN,GMRCR 0,GMRCNDX, GMRCRD,PAG EWID) ;
  507    ;
  508    N GMRCADD ,GMRCNDX,G MRCR1,GMRC V,TEXT,GMR CX
  509    ;
  510    S GMRCADD =0 F  S GM RCADD=$O(^ TMP("GMRCR ",$J,"RES" ,GMRCR0,"A DD",GMRCAD D)) Q:'GMR CADD  D
  511    .N GMRCSG NM,GMRCNMD T,GMRCTIT, GMRCMODE,G MRCCSDT,GM RCCTIT,GMR CCSGM
  512    .;
  513    .F GMRCV= "GMRCSGNM" ,"GMRCNMDT ","GMRCTIT ","GMRCMOD E" D
  514    ..S @GMRC V=$G(^TMP( "GMRCR",$J ,"RES",GMR CR0,"ADD", GMRCADD,GM RCV))
  515    .;
  516    . F GMRCV ="GMRCCSDT ","GMRCCTI T","GMRCCS GM","GMRCC SIG" D
  517    .. S @GMR CV=$G(^TMP ("GMRCR",$ J,"RES",GM RCR0,"ADD" ,GMRCADD,G MRCV))
  518    .S GMRCND X=$O(^TMP( "GMRC",$J, "OUTPUT"," RES"," "), -1)+1
  519    .I $L($G( GMRCRPT))  D SUB("H", "RES",GMRC NDX,"Adden dum #"_GMR CADD_" To  Consult No te #"_GMRC R0_" for " _GMRCRPT_"  continued .")
  520    .I '$L($G (GMRCRPT))  D SUB("H" ,"RES",GMR CNDX,"Adde ndum #"_GM RCADD_" To  Consult N ote #"_GMR CR0_" cont inued.")
  521    .D SUB("H ","RES",GM RCNDX," ")
  522    .I $L($G( GMRCSGNM))  D
  523    ..D SUB(" F","RES",G MRCNDX," " )
  524    ..I (GMRC MODE="elec tronic") S  GMRCX=" A ddendum Si gnature: " _GMRCSGNM_ " /es/ "_$ $EXDT($G(G MRCNMDT))
  525    ..I '(GMR CMODE="ele ctronic")  S GMRCX="  Addendum A uthor: "_G MRCSGNM S: $L($G(GMRC NMDT)) GMR CX=GMRCX_"  Last edit ed: "_$$EX DT(GMRCNMD T)
  526    ..D SUB(" F","RES",G MRCNDX,GMR CX)
  527    ..D:$L($G (GMRCTIT))  SUB("F"," RES",GMRCN DX,"                       "_GMR CTIT)
  528    .I $L($G( GMRCCSDT))  D
  529    ..D SUB(" F","RES",G MRCNDX," " )
  530    ..I (GMRC CSGM="elec tronic") S  GMRCX=" A ddendum Co Signature:  "_GMRCCSI G_" /es/ " _$$EXDT(GM RCCSDT)
  531    ..I '(GMR CCSGM="ele ctronic")  S GMRCX="  Addendum C oSignature : "_GMRCCS IG_" /char t/ "_$$EXD T(GMRCCSDT )
  532    ..D SUB(" F","RES",G MRCNDX,GMR CX)
  533    ..D:$L($G (GMRCCTIT) ) SUB("F", "RES",GMRC NDX,"                         "_ GMRCCTIT)
  534    .D BLD("R ES",GMRCND X,1,0," ")
  535    .I $L($G( GMRCRPT))  D BLD("RES ",GMRCNDX, 1,0,$$CENT ER("ADDEND UM #"_GMRC ADD_" TO C ONSULT NOT E #"_GMRCR 0_" FOR "_ GMRCRPT))
  536    .I '$L($G (GMRCRPT))  D BLD("RE S",GMRCNDX ,1,0,$$CEN TER("ADDEN DUM #"_GMR CADD_" TO  CONSULT NO TE #"_GMRC R0))
  537    .D BLD("R ES",GMRCND X,1,0," ")
  538    .S GMRCR1 =0 F  S GM RCR1=$O(^T MP("GMRCR" ,$J,"RES", GMRCR0,"AD D",GMRCADD ,GMRCR1))  Q:'GMRCR1   D
  539    ..D BLD(" RES",GMRCN DX,1,0,$G( ^TMP("GMRC R",$J,"RES ",GMRCR0," ADD",GMRCA DD,GMRCR1, 0)))
  540    Q
  541    ;
  542   HDR ; Head er code fo r form 513
  543    ;GMRCPEL    ext fmt  Primary El igibiity C ode
  544    ;GMRCELIG   ext fmt  of Patient  Type defi ned @ FORM AT^GMRCP5A
  545    ;CVELIG     marker t o indicate  if pt has  active pr eference f or Combat  Veteran El igibility  status
  546    ;get and  format eli gibility i nfo
  547    N VAEL,VA PA,GMRCPEL ,SUB,GMRCF ROM
  548    N CVELIG  ;WAT
  549    D ELIG^VA DPT
  550    D ADD^VAD PT
  551    N VASV,OE FOIF D SVC ^VADPT S:( VASV(11)>0 )!(VASV(12 )>0)!(VASV (13)>0) OE FOIF="OEF/ OIF" ;WAT  66
  552    S GMRCPEL =$P(VAEL(1 ),U,2)
  553    I $L($G(G MRCELIG))   D
  554    .;if TYPE  is Active  Duty and  VETERAN Y/ N? is No,  then call  the pt Act ive Duty
  555    .S:$P(VAE L(6),U,1)= 5&(VAEL(4) =0) GMRCEL IG=$P(VAEL (6),U,2)
  556    F SUB=0,1  D
  557    .N GMRCFL N
  558    .S GMRCFL N=$P($G(^D PT(GMRCDFN ,0)),U,1)
  559    .S CVELIG =$$CVEDT^D GCV(GMRCDF N) S:$P($G (CVELIG),U ,3) CVELIG ="CV ELIGI BLE" ;WAT
  560    .D BLD("H DR",SUB,1, 0,GMRCDVL)
  561    .D BLD("H DR",SUB,1, 6,"MEDICAL  RECORD")
  562    .D BLD("H DR",SUB,0, 39,"|")
  563    .D BLD("H DR",SUB,0, 45,"CONSUL TATION SHE ET")
  564    .D BLD("H DR",SUB,1, 0,GMRCDVL)
  565    .D BLD("H DR",SUB,1, 0,GMRCFLN)
  566    .D BLD("H DR",SUB,0, 45,GMRCPEL )
  567    .D BLD("H DR",SUB,1, 0,"XXX-XX- "_$P(GMRCS N,"-",3))
  568    .D BLD("H DR",SUB,0, 16,$$EXDT( GMRCDOB)_"  (Age: "_G MRCAGE_")" ) ;89 add  age
  569    .D BLD("H DR",SUB,0, 45,GMRCELI G)
  570    .D:$G(CVE LIG)["CV"  BLD("HDR", SUB,1,45,C VELIG)
  571    .D:$G(OEF OIF)="OEF/ OIF" BLD(" HDR",SUB,1 ,45,OEFOIF ) ;WAT 66
  572    ;
  573    ;                                     ADDR ESS LINES  1-3
  574    F GMRCX=1 ,2,3 D:$L( VAPA(GMRCX ))
  575    .D BLD("H DR",0,1,0, VAPA(GMRCX ))
  576    .;I GMRCX =1 D BLD(" HDR",0,0,5 1,"Standar d Form 513  (Rev 9-77 )")
  577    ;
  578    ;          CITY               S TATE                  ZIP CODE
  579    S GMRCX=V APA(4)_"    "_$P(VAPA (5),U,2)_"       "_VA PA(6)
  580    ;
  581    I $L(VAPA (8)) S GMR CX=GMRCX_"  Phone: "_ VAPA(8) ;  TELEPHONE  (IF AVAILA BLE)
  582    I $L($P($ G(^DPT(GMR CDFN,.13)) ,U,4)) S G MRCX=GMRCX _" Cell: " _$P($G(^DP T(GMRCDFN, .13)),U,4)  ;89 add c ell phone.
  583    ;
  584    D BLD("HD R",0,1,0,G MRCX)
  585    D BLD("HD R",0,1,0,G MRCDVL)
  586    D BLD("HD R",0,1,0," Consult Re quest: "_$ $CONSRQ(GM RCIFN))
  587    D BLD("HD R",0,1,55, "|Consult  No.: "_GMR CIFN)
  588    ;
  589    D BLD("HD R",1,1,0,G MRCEQL)
  590    D BLD("HD R",0,1,0,G MRCDVL)
  591    ;
  592    I $G(CMT)  D BLD("HD R",0,1,27, "("_$$PRCM T^GMRCP5B( CMT)_")")  Q
  593    ;
  594    S GMRCFRO M=$P($G(^S C(+$P(GMRC RD,U,6),0) ),U,1)
  595    ;
  596    I '$L(GMR CFROM) D
  597    .N VAIN
  598    .D INP^VA DPT
  599    .S GMRCFR OM=$P($G(V AIN(4)),U, 2)
  600    .I $L($G( VAIN(5)))  S GMRCFROM =GMRCFROM_ " (Rm/Bd:  "_$G(VAIN( 5))_" )"
  601    ;No locat ion, IFC -  consultin g site
  602    I '$L(GMR CFROM),$P( GMRCRD,U,2 3),$P($G(G MRCRD(12)) ,U,5)="F"  D
  603    .I $P(GMR CRD,U,21)  S GMRCFROM =$$GET1^DI Q(4,$P(GMR CRD,U,21), .01)
  604    .E  S GMR CFROM=$$GE T1^DIQ(4,$ P(GMRCRD,U ,23),.01)
  605    ;
  606    D BLD("HD R",0,1,0," To: "_$P($ G(^GMR(123 .5,+$P(GMR CRD,U,5),0 )),U,1))
  607    D BLD("HD R",0,1,5," From: "_GM RCFROM)
  608    D BLD("HD R",0,0,49, "|Requeste d: "_$$EXD T($P(GMRCR D,U,7)))
  609    ;
  610    D BLD("HD R",0,1,0,G MRCDVL)
  611    D BLD("HD R",0,1,0," Requesting  Facility:  "_$E(GMRC FAC,1,22))
  612    I $P(GMRC RD,U,11) D  BLD("HDR" ,0,0,45,"| ATTENTION:  "_$E($$GE T1^DIQ(200 ,+$P(GMRCR D,U,11),.0 1),1,21))
  613    I $P(GMRC RD,U,23) D
  614    . D BLD(" HDR",0,1,0 ,"Remote C onsult No. : "_GMRCIN O)
  615    . D BLD(" HDR",0,1,0 ,"Role: "_ GMRCIRL)
  616    D BLD("HD R",0,1,0,G MRCEQL)
  617    ;
  618    D KVAR^VA DPT ;WAT 6 6
  619    Q
  620    ;
  621   CENTER(X)  ;
  622    ;
  623    N TEXT,CO L
  624    S COL=35- ($L(X)\2)  Q:(COL<1)  X
  625    S $E(TEXT ,COL)=X
  626    Q TEXT
  627    ;
  628   BLD(SUB,ND X,LINE,TAB ,TEXT,RUNT IME) ;
  629    ;
  630    Q:'$L($G( SUB))
  631    N LINECNT
  632    ;
  633    F LINECNT =1:1:+LINE  S ^TMP("G MRC",$J,"O UTPUT",SUB ,NDX,$$LAS TLN(SUB,ND X)+1,0)=""
  634    ;
  635    S $E(^TMP ("GMRC",$J ,"OUTPUT", SUB,NDX,$$ LASTLN(SUB ,NDX),0),T AB+1)=TEXT
  636    I $L($G(R UNTIME)) S  ^TMP("GMR C",$J,"OUT PUT",SUB,N DX,$$LASTL N(SUB,NDX) ,1)=RUNTIM E
  637    ;
  638    S GMRCLAS T=SUB
  639    Q
  640    ;
  641   SUB(ZONE,S UB,NDX,TEX T) ;
  642    ;
  643    N NEXT
  644    S NEXT=$O (^TMP("GMR C",$J,"OUT PUT",SUB,N DX,ZONE,"  "),-1)+1
  645    S ^TMP("G MRC",$J,"O UTPUT",SUB ,NDX,ZONE, NEXT,0)=TE XT
  646    Q
  647    ;
  648   LASTLN(SUB ,NDX) ;
  649    Q +$O(^TM P("GMRC",$ J,"OUTPUT" ,SUB,NDX,"  "),-1)
  650    ;
  651   CONSRQ(IFN ) ;
  652    ;
  653    N PTR,LIN K,REF,GMRC RQ
  654    I +$P(^GM R(123,+IFN ,0),U,8) D
  655    . S GMRCR Q=$P(^GMR( 123,+IFN,0 ),U,8)
  656    . S GMRCR Q=$$GET1^D IQ(123.3,+ GMRCRQ,.01 )
  657    . I '$L(G MRCRQ) S G MRCRQ="Pro cedure"
  658    I $L($G(G MRCRQ)) Q  GMRCRQ
  659    I $L($G(^ GMR(123,IF N,1.11)))  D
  660    . N SERV, TYPE
  661    . S SERV= $$UP^XLFST R($$GET1^D IQ(123.5,$ P(^GMR(123 ,IFN,0),U, 5),.01))
  662    . S TYPE= $$UP^XLFST R(^GMR(123 ,IFN,1.11) ) I TYPE'= SERV D
  663    . I TYPE' =SERV S GM RCRQ=$E(^G MR(123,IFN ,1.11),1,3 6)
  664    Q:$L($G(G MRCRQ)) GM RCRQ Q "Co nsult"
  665    ;
  666   EXDT(X) ;E XTERNAL DA TE FORMAT
  667    ;
  668    N DATE,TI ME,HR,MN,P D,Y,%DT
  669    Q:'$L(X)  ""
  670    I '(X?7N. 1".".6N) S  %DT="PTS"  D ^%DT S  X=Y
  671    Q $$FMTE^ XLFDT(X,"5 PMZ")
  672    ;
  673   GMRCUTL1
  674   Before:
  675   GMRCUTL1 ; SLC/DCM,JF R,MA - Gen eral Utili ties ;10/1 5/02  11:4 9
  676    ;;3.0;CON SULT/REQUE ST TRACKIN G;**1,4,12 ,15,21,17, 28**;DEC 2 7, 1997
  677    ;
  678    ; This ro utine invo kes IA #28 76,3121
  679    ; Patch # 21 added v ariable GM RCAUDT and  moved lin e tag PRNT AUDT
  680    ; to GMRC P5A.
  681    ;
  682   ACTM ;;Set  correct v ariables t o complete , disconti nue, etc.  a consult
  683    K GMRCQUT
  684    S:'+$G(GM RCA) GMRCA =$O(^GMR(1 23.1,"B",G MRCACTM,"" ))
  685    S GMRCACT M=$P($G(^G MR(123.1,+ GMRCA,0)), "^")
  686    S ORSTS=$ S(GMRCA:$P (^GMR(123. 1,GMRCA,0) ,"^",2),1: 0)
  687    I 'GMRCA  S GMRCQUT= 1
  688    Q
  689   PRNT(SRVCI FN,GMRCO)  ;print for m 513 to a  printer w hen new co nsult is e ntered
  690    N ORVP,GM RCDEV,GMRC QUED,IOP,% ZIS,POP,ZT DTH,ZTDESC ,ZTIO,ZTRT N,ZTSK,GMR CAUDT
  691    I '$G(SRV CIFN) S SR VCIFN=+$P( ^GMR(123,G MRCO,0),U, 5)
  692    Q:'$D(^GM R(123.5,SR VCIFN,123) )  Q:'$P(^ GMR(123.5, SRVCIFN,12 3),"^",9)
  693    S IOP="`" _$P(^GMR(1 23.5,SRVCI FN,123),"^ ",9)
  694    S %ZIS="N " D ^%ZIS  I POP S %Z IS=0 D HOM E^%ZIS Q
  695    S GMRCDEV =ION,GMRCQ UED=1,GMRC AUDT=1
  696    S ZTRTN=" PRNT^GMRCP 5A("_(+GMR CO)_","_(+ $G(TIUFLG) )_",1,"""_ $G(GMRCCPY ,"W")_""", 0,"_(GMRCA UDT)_")"
  697    S ZTDESC= "CONSULT/R EQUEST PAC KAGE PRINT  FORM 513  FOR NEW CO NSULT"
  698    S ZTIO=GM RCDEV,ZTDT H=$H
  699    D ^%ZTLOA D
  700    S %ZIS=0  D HOME^%ZI S
  701    K GMRCQUE D,GMRCDEV1
  702    Q
  703   END K GMRC DEV,GMRCDE V1,GMRCORE C,GMRCFMT
  704    Q
  705   PROVDX(OI)  ;return P ROV DX pro mpting inf o from 123 .5
  706    ;    Inpu t:
  707    ;       O I = ref to  file 123. 5("#;99CON ") or file  123.3 (#; 99PRC)
  708    ;
  709    ;    Retu rns:  stri ng  A^B
  710    ;       A  = O (opti onal), R ( required)  or S (supp ress)
  711    ;       B  = F (free -text) or  L (lexicon )
  712    ;
  713    N GMRCFIL
  714    Q:'+$G(OI ) "^"
  715    S GMRCFIL =$S(OI["99 PRC":123.3 ,1:123.5)
  716    Q:'$D(^GM R(GMRCFIL, +OI)) "^"
  717    N STRING, NODE
  718    I GMRCFIL =123.3 S N ODE=$P(^GM R(123.3,+O I,0),U,7,8 )
  719    I GMRCFIL =123.5 S N ODE=$P($G( ^GMR(123.5 ,+OI,1)),U ,1,2)
  720    I NODE=""  Q "O^F" ; values not  set
  721    S $P(STRI NG,U)=$S($ L($P(NODE, U)):$P(NOD E,U),1:"O" )
  722    S $P(STRI NG,U,2)=$S ($L($P(NOD E,U,2)):$P (NODE,U,2) ,1:"F")
  723    Q STRING
  724   ORIFN(GMRC 123) ;retu rn ORIFN a ssociated  with give  record in  ^GMR(123,
  725    ; GMRC123  = ien of  consult re cord in fi le 123
  726    Q $P($G(^ GMR(123,GM RC123,0)), U,3)
  727   GETDT(PROM PT,DEFAULT ) ;prompt  and return  FM date
  728    ;Input:
  729    ;  PROMPT   = text o f prompt -  DIR("A")           ( optional)
  730    ;  DEFAUL T = defaul t date to  prompt - D IR("B")  ( optional)
  731    ; 
  732    ;Output:
  733    ; FM date /time if s uccessfull y answered , "^" if e xit or tim eout
  734    N DIR,DIR UT,DIROUT, DTOUT,DUOU T,X,Y
  735    S DIR(0)= "DA^::EPT"
  736    S DIR("?" )="Enter t he date/ti me the act ivity took  place."
  737    S DIR("A" )=$S($D(PR OMPT):PROM PT_" ",1:" Actual Dat e/Time of  Activity:  ")
  738    S DIR("B" )=$S($D(DE FAULT):DEF AULT,1:"NO W")
  739    D ^DIR
  740    I $D(DUOU T)!($D(DTO UT)) S Y=" ^"
  741    Q Y
  742    ;
  743   DCPRNT(IEN ,USER) ;re print SF-5 13 on DC?
  744    N SERV,RE PR
  745    S SERV=$P (^GMR(123, IEN,0),U,5 ) I 'SERV  Q 0
  746    S REPR=$P ($G(^GMR(1 23.5,SERV, 1)),U,5)
  747    I 'REPR Q  1
  748    I REPR=2  Q 0
  749    I REPR=1, '$$VALID^G MRCAU(SERV ,IEN,USER)  Q 1
  750    Q 0
  751    ;
  752   PREREQ(GMR CARR,GMRCS RV,GMRCDFN ,UNRESOLV)  ; return  service pr e-requisit e
  753    ; pre-req uisite sto red in 125  nodes in  file 123.5  or 123.3
  754    ; GMRCARR  = array t o return c ontaining  pre-requis ite
  755    ; GMRCSRV  = ref to  file 123.5  (ien;99CO N) or 123. 3 (ien;99P RC)
  756    ; GMRCDFN  = patient  identifie r if to re turn resol ved
  757    ; UNRESOL V = 1 or 0  ; if UNRE SOLV=1 GMR CARR will  be returne d unresolv ed
  758    Q:'+GMRCS RV
  759    N GMRCFIL
  760    S GMRCFIL =$S(GMRCSR V["99PRC": 123.3,1:12 3.5)
  761    Q:'$D(^GM R(GMRCFIL, +GMRCSRV,1 25))
  762    I '$D(GMR CDFN)!($G( UNRESOLV))  D  Q
  763    . M @GMRC ARR=^GMR(G MRCFIL,+GM RCSRV,125)
  764    D BLRPLT^ TIUSRVD(,, GMRCDFN,,$ NA(^GMR(GM RCFIL,+GMR CSRV,125)) )
  765    I $D(^TMP ("TIUBOIL" ,$J)) M @G MRCARR=^TM P("TIUBOIL ",$J)
  766    K ^TMP("T IUBOIL",$J )
  767    Q
  768    ;
  769   LOCKREC(GM RCDA) ;att empt to lo ck a consu lt record  using orde r or recor d
  770    ; Input:
  771    ;   GMRCD A  = ien o f consult  record fro m file 123
  772    ;
  773    ; Output:  
  774    ;     1 o r 0^reason  can't be  locked  
  775    ;           1 = succ essfully l ocked
  776    ;           0 = coul dn't be lo cked
  777    N GMRCORD ,GMRCMSG
  778    S GMRCORD =$P($G(^GM R(123,GMRC DA,0)),U,3 )
  779    I $G(GMRC ORD) D  ;a n order as sociated
  780    . S GMRCM SG=$$LOCK1 ^ORX2(GMRC ORD)
  781    . ; GMRCM SG=1 if lo cked  or 0  if couldn 't be lock ed
  782    I $L($G(G MRCMSG)) Q  GMRCMSG
  783    ; no orde r = Inter- facility C onsult so  lock consu lt record
  784    L +^GMR(1 23,GMRCDA) :5
  785    I '$T Q " 0^Another  user is ed iting this  record" ;  couldn't  lock it
  786    Q 1
  787    ;
  788   UNLKREC(GM RCDA) ;unl ock a cons ult record
  789    ; Input:
  790    ;   GMRCD A  = ien o f consult  record fro m file 123
  791    ;
  792    N GMRCORD
  793    S GMRCORD =$P($G(^GM R(123,GMRC DA,0)),U,3 )
  794    I $G(GMRC ORD) D  Q
  795    . D UNLK1 ^ORX2(GMRC ORD)
  796    L -^GMR(1 23,GMRCDA)
  797    Q
  798   After:
  799   GMRCUTL1 ; SLC/DCM,JF R,MA - Gen eral Utili ties ;01/2 0/2017  15 :23
  800    ;;3.0;CON SULT/REQUE ST TRACKIN G;**1,4,12 ,15,21,17, 28,89**;DE C 27, 1997 ;Build 16
  801    ;Added ca ll to GMRC ZUTL for s econdary p rinter
  802    ; This ro utine invo kes IA #28 76,3121
  803    ; Patch # 21 added v ariable GM RCAUDT and  moved lin e tag PRNT AUDT
  804    ; to GMRC P5A.
  805    ;
  806   ACTM ;;Set  correct v ariables t o complete , disconti nue, etc.  a consult
  807    K GMRCQUT
  808    S:'+$G(GM RCA) GMRCA =$O(^GMR(1 23.1,"B",G MRCACTM,"" ))
  809    S GMRCACT M=$P($G(^G MR(123.1,+ GMRCA,0)), "^")
  810    S ORSTS=$ S(GMRCA:$P (^GMR(123. 1,GMRCA,0) ,"^",2),1: 0)
  811    I 'GMRCA  S GMRCQUT= 1
  812    Q
  813   PRNT(SRVCI FN,GMRCO)  ;print for m 513 to a  printer w hen new co nsult is e ntered
  814    D PRNT^GM RCZUTL(SRV CIFN,GMRCO )  ;89 cal l for seco ndary copy
  815    N ORVP,GM RCDEV,GMRC QUED,IOP,% ZIS,POP,ZT DTH,ZTDESC ,ZTIO,ZTRT N,ZTSK,GMR CAUDT
  816    I '$G(SRV CIFN) S SR VCIFN=+$P( ^GMR(123,G MRCO,0),U, 5)
  817    Q:'$D(^GM R(123.5,SR VCIFN,123) )  Q:'$P(^ GMR(123.5, SRVCIFN,12 3),"^",9)
  818    S IOP="`" _$P(^GMR(1 23.5,SRVCI FN,123),"^ ",9)
  819    S %ZIS="N " D ^%ZIS  I POP S %Z IS=0 D HOM E^%ZIS Q
  820    S GMRCDEV =ION,GMRCQ UED=1,GMRC AUDT=1
  821    S ZTRTN=" PRNT^GMRCP 5A("_(+GMR CO)_","_(+ $G(TIUFLG) )_",1,"""_ $G(GMRCCPY ,"W")_""", 0,"_(GMRCA UDT)_")"
  822    S ZTDESC= "CONSULT/R EQUEST PAC KAGE PRINT  FORM 513  FOR NEW CO NSULT"
  823    S ZTIO=GM RCDEV,ZTDT H=$H
  824    D ^%ZTLOA D
  825    S %ZIS=0  D HOME^%ZI S
  826    K GMRCQUE D,GMRCDEV1
  827    Q
  828   END K GMRC DEV,GMRCDE V1,GMRCORE C,GMRCFMT
  829    Q
  830   PROVDX(OI)  ;return P ROV DX pro mpting inf o from 123 .5
  831    ;    Inpu t:
  832    ;       O I = ref to  file 123. 5("#;99CON ") or file  123.3 (#; 99PRC)
  833    ;
  834    ;    Retu rns:  stri ng  A^B
  835    ;       A  = O (opti onal), R ( required)  or S (supp ress)
  836    ;       B  = F (free -text) or  L (lexicon )
  837    ;
  838    N GMRCFIL
  839    Q:'+$G(OI ) "^"
  840    S GMRCFIL =$S(OI["99 PRC":123.3 ,1:123.5)
  841    Q:'$D(^GM R(GMRCFIL, +OI)) "^"
  842    N STRING, NODE
  843    I GMRCFIL =123.3 S N ODE=$P(^GM R(123.3,+O I,0),U,7,8 )
  844    I GMRCFIL =123.5 S N ODE=$P($G( ^GMR(123.5 ,+OI,1)),U ,1,2)
  845    I NODE=""  Q "O^F" ; values not  set
  846    S $P(STRI NG,U)=$S($ L($P(NODE, U)):$P(NOD E,U),1:"O" )
  847    S $P(STRI NG,U,2)=$S ($L($P(NOD E,U,2)):$P (NODE,U,2) ,1:"F")
  848    Q STRING
  849   ORIFN(GMRC 123) ;retu rn ORIFN a ssociated  with give  record in  ^GMR(123,
  850    ; GMRC123  = ien of  consult re cord in fi le 123
  851    Q $P($G(^ GMR(123,GM RC123,0)), U,3)
  852   GETDT(PROM PT,DEFAULT ) ;prompt  and return  FM date
  853    ;Input:
  854    ;  PROMPT   = text o f prompt -  DIR("A")           ( optional)
  855    ;  DEFAUL T = defaul t date to  prompt - D IR("B")  ( optional)
  856    ; 
  857    ;Output:
  858    ; FM date /time if s uccessfull y answered , "^" if e xit or tim eout
  859    N DIR,DIR UT,DIROUT, DTOUT,DUOU T,X,Y
  860    S DIR(0)= "DA^::EPT"
  861    S DIR("?" )="Enter t he date/ti me the act ivity took  place."
  862    S DIR("A" )=$S($D(PR OMPT):PROM PT_" ",1:" Actual Dat e/Time of  Activity:  ")
  863    S DIR("B" )=$S($D(DE FAULT):DEF AULT,1:"NO W")
  864    D ^DIR
  865    I $D(DUOU T)!($D(DTO UT)) S Y=" ^"
  866    Q Y
  867    ;
  868   DCPRNT(IEN ,USER) ;re print SF-5 13 on DC?
  869    N SERV,RE PR
  870    S SERV=$P (^GMR(123, IEN,0),U,5 ) I 'SERV  Q 0
  871    S REPR=$P ($G(^GMR(1 23.5,SERV, 1)),U,5)
  872    I 'REPR Q  1
  873    I REPR=2  Q 0
  874    I REPR=1, '$$VALID^G MRCAU(SERV ,IEN,USER)  Q 1
  875    Q 0
  876    ;
  877   PREREQ(GMR CARR,GMRCS RV,GMRCDFN ,UNRESOLV)  ; return  service pr e-requisit e
  878    ; pre-req uisite sto red in 125  nodes in  file 123.5  or 123.3
  879    ; GMRCARR  = array t o return c ontaining  pre-requis ite
  880    ; GMRCSRV  = ref to  file 123.5  (ien;99CO N) or 123. 3 (ien;99P RC)
  881    ; GMRCDFN  = patient  identifie r if to re turn resol ved
  882    ; UNRESOL V = 1 or 0  ; if UNRE SOLV=1 GMR CARR will  be returne d unresolv ed
  883    Q:'+GMRCS RV
  884    N GMRCFIL
  885    S GMRCFIL =$S(GMRCSR V["99PRC": 123.3,1:12 3.5)
  886    Q:'$D(^GM R(GMRCFIL, +GMRCSRV,1 25))
  887    I '$D(GMR CDFN)!($G( UNRESOLV))  D  Q
  888    . M @GMRC ARR=^GMR(G MRCFIL,+GM RCSRV,125)
  889    D BLRPLT^ TIUSRVD(,, GMRCDFN,,$ NA(^GMR(GM RCFIL,+GMR CSRV,125)) )
  890    I $D(^TMP ("TIUBOIL" ,$J)) M @G MRCARR=^TM P("TIUBOIL ",$J)
  891    K ^TMP("T IUBOIL",$J )
  892    Q
  893    ;
  894   LOCKREC(GM RCDA) ;att empt to lo ck a consu lt record  using orde r or recor d
  895    ; Input:
  896    ;   GMRCD A  = ien o f consult  record fro m file 123
  897    ;
  898    ; Output:  
  899    ;     1 o r 0^reason  can't be  locked  
  900    ;           1 = succ essfully l ocked
  901    ;           0 = coul dn't be lo cked
  902    N GMRCORD ,GMRCMSG
  903    S GMRCORD =$P($G(^GM R(123,GMRC DA,0)),U,3 )
  904    I $G(GMRC ORD) D  ;a n order as sociated
  905    . S GMRCM SG=$$LOCK1 ^ORX2(GMRC ORD)
  906    . ; GMRCM SG=1 if lo cked  or 0  if couldn 't be lock ed
  907    I $L($G(G MRCMSG)) Q  GMRCMSG
  908    ; no orde r = Inter- facility C onsult so  lock consu lt record
  909    L +^GMR(1 23,GMRCDA) :5
  910    I '$T Q " 0^Another  user is ed iting this  record" ;  couldn't  lock it
  911    Q 1
  912    ;
  913   UNLKREC(GM RCDA) ;unl ock a cons ult record
  914    ; Input:
  915    ;   GMRCD A  = ien o f consult  record fro m file 123
  916    ;
  917    N GMRCORD
  918    S GMRCORD =$P($G(^GM R(123,GMRC DA,0)),U,3 )
  919    I $G(GMRC ORD) D  Q
  920    . D UNLK1 ^ORX2(GMRC ORD)
  921    L -^GMR(1 23,GMRCDA)
  922    Q
  923   GMRCCA (Ne w)
  924   GMRCCA ;SF VAMC/DAD -  Consult C losure Too l: Report  Prompting  ;01/20/17  15:19
  925    ;;3.0;CON SULT/REQUE ST TRACKIN G;**89**;D EC 27, 199 7;Build 16
  926    ;Consult  Closure To ol          ;
  927            ;  IA#    Us age      C omponent
  928            ;  --------- ---------- --------
  929            ;   4836  Pr ivate    ^ DIC(40.7
  930            ;   510  Con trolled ^D ISV(
  931            ;   1519  Su pported  E N^XUTMDEVQ
  932            ;   2056  Su pported  $ $GET1^DIQ
  933            ;   2608  Su pported  $ $TEST^DDBR T
  934            ;  10024  Su pported  W AIT^DICD
  935            ;  10026  Su pported  ^ DIR
  936            ;  10063  Su pported  ^ %ZTLOAD
  937            ;  10103  Su pported  $ $DT^XLFDT
  938            ;  10104  Su pported  $ $TRIM^XLFS TR
  939            ;  10150  Su pported  H LP^DDSUTL
  940            ;
  941   EN       ;
  942            ;  *** Inter active ent ry point
  943            N  GM0CFG,GM APPT,GMDLI M,GMHEAD,G MAUTO,GMNO TE,GMOKAY
  944            N  GMOPUT,GM TBEG,GMTEA M,GMTEXT,G MTEND,GMXL AT
  945            N  DIR,DIROU T,DIRUT,DT OUT,DUOUT
  946            N  X,Y,ZTCPU ,ZTDESC,ZT DTH,ZTIO,Z TKIL
  947            N  ZTPRI,ZTR TN,ZTSAVE, ZTSK,ZTSYN C,ZTUCI
  948            S  GMAUTO=0  ; 0-disabl e/1-enable  consult a uto update  (***DO NO T ENABLE** *)
  949            ;
  950            D  PATCH^GMR CCX(.GMOKA Y)
  951            I  GMOKAY'>0  G EXIT
  952            ;
  953            K  DIR
  954            S  DIR(0)="P OAr^123.03 3:AEMNQZ"
  955            S  DIR("A")= "Select CO NSULT CONF IGURATION:  "
  956            S  GM0CFG=$G (^DISV(DUZ ,$$GLOBROO T^GMRCCD(1 23.033)))
  957            I  $$CHKCFG( +GM0CFG,1) >0 D
  958            .  S DIR("B" )=$$GET1^D IQ(123.033 ,+GM0CFG,. 01)
  959            .  Q
  960            S  DIR("S")= "I $$CHKCF G^GMRCCA(+ Y,1)>0"
  961            W  ! D ^DIR  S GM0CFG=+ $G(Y)
  962            I  $$DIREXIT >0 G EXIT
  963            ;
  964            S  GMHEAD="S elect a co nsult date  range"
  965            D  LASTMNTH^ GMRCCY($$D T^XLFDT,.G MTBEG,.GMT END)
  966            W  ! I $$EN^ GMRCCY(.GM TBEG,.GMTE ND,GMHEAD, "U")'>0 G  EXIT
  967            ;
  968            K  DIR
  969            S  DIR(0)="S OA^1:Seen  in clinic; 0:Not seen  in clinic ;"
  970            S  DIR("A",1 )="Select  an appoint ment statu s for the  report"
  971            S  DIR("A",2 )=" "
  972            S  DIR("A",3 )="  1 - S een in cli nic"
  973            S  DIR("A",4 )="  0 - N ot seen in  clinic"
  974            S  DIR("A",5 )=" "
  975            S  DIR("A")= "Select AP POINTMENT  STATUS: "
  976            S  DIR("B")= 1
  977            W  ! D ^DIR  S GMAPPT=+ $G(Y)
  978            I  $$DIREXIT >0 G EXIT
  979            ;
  980            K  DIR
  981            S  DIR(0)="S OA^1:Has a  note;0:Do es not hav e a note;"
  982            S  DIR("A",1 )="Select  a note sta tus for th e report"
  983            S  DIR("A",2 )=" "
  984            S  DIR("A",3 )="  1 - H as a note"
  985            S  DIR("A",4 )="  0 - D oes not ha ve a note"
  986            S  DIR("A",5 )=" "
  987            S  DIR("A")= "Select NO TE STATUS:  "
  988            S  DIR("B")= 1
  989            W  ! D ^DIR  S GMNOTE=+ $G(Y)
  990            I  $$DIREXIT >0 G EXIT
  991            ;
  992            S  GMOPUT=0, GMXLAT=""
  993            I  GMNOTE>0  D  G:$$DIR EXIT>0 EXI T
  994            .  K DIR
  995            .  S DIR(0)= "YAO"
  996            .  S DIR("A" )="Interac tive consu lt update:  "
  997            .  S DIR("B" )="Yes"
  998            .  W ! D ^DI R S GMOPUT =+$G(Y)
  999            .  S GMXLAT= "1^I"
  1000            .  I GMOPUT> 0 I $$TEST ^DDBRT'>0  D
  1001            . . K GMTEXT
  1002            . . S GMTEXT (1)="*** T he VA File Man browse r is not s upported b y your ter minal type   ***"
  1003            . . S GMTEXT (2)="*** Y ou cannot  use the in teractive  consult up date on th is termina l ***"
  1004            . . S GMTEXT ="*** You  may print  the consul t report a nd/or upda te the CPR S team   * **"
  1005            . . D HANGMS G^GMRCCD(. GMTEXT,3,1 )
  1006            . . S GMOPUT =0,GMXLAT= ""
  1007            . . Q
  1008            .  Q
  1009            ;
  1010            I  GMOPUT'>0  D  G:$$DI REXIT>0 EX IT
  1011            .  S GMTEAM= $$ISTM^GMR CCD(GM0CFG )
  1012            .  K DIR
  1013            .  S DIR(0)= "LOA^1:1:0 "
  1014            .  S DIR("A" )="Select  OUTPUT TYP E: "
  1015            .  S DIR("A" ,1)="Selec t the outp ut type fo r the repo rt"
  1016            .  S DIR("A" ,2)=" "
  1017            .  S DIR("A" ,3)="  1 -  Print rep ort"
  1018            .  S DIR("B" )="1"
  1019            .  S GMXLAT= "1^P"
  1020            .  I GMTEAM> 0 D
  1021            . . S DIR(0) ="LOA^1:2: 0"
  1022            . . S DIR("A ",4)="  2  - Team upd ate"
  1023            . . S DIR("B ")="1,2"
  1024            . . S GMXLAT ="12^PT"
  1025            . . Q
  1026            .  I (GMAUTO >0)&(GMNOT E>0) D
  1027            . . S DIR(0) ="LOA^1:2: 0"
  1028            . . S DIR("A ",4)="  2  - Consult  update"
  1029            . . S DIR("B ")="1,2"
  1030            . . S GMXLAT ="12^PC"
  1031            . . Q
  1032            .  I (GMAUTO >0)&(GMTEA M>0)&(GMNO TE>0) D
  1033            . . S DIR(0) ="LOA^1:3: 0"
  1034            . . S DIR("A ",4)="  2  - Team upd ate"
  1035            . . S DIR("A ",5)="  3  - Consult  update"
  1036            . . S DIR("B ")="1-3"
  1037            . . S GMXLAT ="123^PTC"
  1038            . . Q
  1039            .  S DIR("A" ,1+$O(DIR( "A",1E25), -1))=" "
  1040            .  W ! D ^DI R S GMOPUT =$G(Y)
  1041            .  Q
  1042            S  GMOPUT=$$ TRIM^XLFST R(GMOPUT," LR",",")
  1043            S  GMOPUT=$T R(GMOPUT,$ P(GMXLAT,U ,1),$P(GMX LAT,U,2))
  1044            ;
  1045            I  GMOPUT["P " D  G:$$D IREXIT>0 E XIT
  1046            .  K DIR
  1047            .  S DIR(0)= "YOA"
  1048            .  S DIR("A" )="Delimit ed output:  "
  1049            .  S DIR("B" )="No"
  1050            .  W ! D ^DI R S GMDLIM =+$G(Y)
  1051            .  Q
  1052            E   D
  1053            .  S GMDLIM= 0
  1054            .  Q
  1055            ;
  1056            W  !
  1057            S  ZTRTN="TA SK^GMRCCA( "_GMTBEG_" ,"_GMTEND_ ","
  1058            S  ZTRTN=ZTR TN_GM0CFG_ ","_GMAPPT _","_GMNOT E_","""
  1059            S  ZTRTN=ZTR TN_GMOPUT_ ""","_GMDL IM_")"
  1060            S  ZTDESC="C onsult Clo sure Tool"
  1061            I  GMOPUT["P " D
  1062            .  W !,"This  report re quires a 1 32 column  output dev ice"
  1063            .  D EN^XUTM DEVQ(ZTRTN ,ZTDESC,.Z TSAVE,"MQ" ,1)
  1064            .  Q
  1065            E   D
  1066            .  I GMOPUT[ "I" D
  1067            . . W !,"Sea rching for  patient c onsults /  appointmen ts / notes ",!
  1068            . . D WAIT^D ICD
  1069            . . D @ZTRTN
  1070            . . Q
  1071            .  E  D
  1072            . . S ZTIO=" "
  1073            . . D ^%ZTLO AD
  1074            . . Q
  1075            .  Q
  1076            I  $G(ZTSK)> 0 W !,"Tas k #",ZTSK
  1077            ;
  1078   EXIT     ;
  1079            ;  *** Commo n exit poi nt
  1080            Q
  1081            ;
  1082   TASK(GMTBE G,GMTEND,G M0CFG,GMAP PT,GMNOTE, GMOPUT,GMD LIM) ;
  1083            ;  *** TaskM an entry p oint
  1084            N  GMROOT
  1085            S  GMROOT=$N A(^TMP($T( +0),$J))
  1086            K  @GMROOT
  1087            D  GETDATA^G MRCCB(GMRO OT,GMTBEG, GMTEND,GM0 CFG,GMAPPT ,GMNOTE,GM OPUT,GMDLI M)
  1088            I  GMOPUT["C " D
  1089            .  D CONSUPD T^GMRCCC(G MROOT)
  1090            .  Q
  1091            I  GMOPUT["T " D
  1092            .  D MAKETEA M^GMRCCC(G MROOT,GM0C FG)
  1093            .  Q
  1094            I  GMOPUT["P " D
  1095            .  D PRNTDAT A^GMRCCC(G MROOT,GMTB EG,GMTEND, GM0CFG,GMA PPT,GMNOTE ,GMDLIM)
  1096            .  Q
  1097            I  GMOPUT["I " D
  1098            .  D INTERAC T^GMRCCD(G MROOT)
  1099            .  Q
  1100            K  @GMROOT
  1101            Q
  1102            ;
  1103   CHKCFG(GM0 CFG,GMINAC ) ;
  1104            ;  *** Scree n for vali d consult  configurat ion
  1105            N  GMDATA,GM OKAY
  1106            S  GMOKAY=1
  1107            I  (GMINAC>0 )&($$GET1^ DIQ(123.03 3,GM0CFG,. 02,"I")>0)  S GMOKAY= 0
  1108            I  $$GET1^DI Q(123.033, GM0CFG,.04 )'>0 S GMO KAY=0
  1109            I  $$GET1^DI Q(123.033, GM0CFG,.05 )'>0 S GMO KAY=0
  1110            S  GMDATA("S TOP")=($$G ET1^DIQ(12 3.033,GM0C FG,.06,"I" )'>0)
  1111            F  GMDATA="C LIN","CLPR ","CONP"," CONS","NOT E","PROT"  D
  1112            .  S GMDATA( GMDATA)=($ O(^GMR(123 .033,GM0CF G,GMDATA,0 ))'>0)
  1113            .  Q
  1114            I  (GMDATA(" CLPR"))&(G MDATA("CON P"))&(GMDA TA("CONS") )&(GMDATA( "PROT")) S
  1115    GMOKAY=0
  1116            I  (GMDATA(" CLIN"))&(G MDATA("STO P")) S GMO KAY=0
  1117            I  GMDATA("N OTE") S GM OKAY=0
  1118            Q  GMOKAY
  1119            ;
  1120   DIREXIT()  ;
  1121            ;  *** DIR e xit status
  1122            Q  $D(DIROUT )!$D(DIRUT )!$D(DTOUT )!$D(DUOUT )
  1123            ;
  1124   POSTSAVE(G M0CFG) ;
  1125            ;  *** Post- save code  for config  editor
  1126            N  GMTEXT
  1127            I  $$CHKCFG( +GM0CFG,0) '>0 D
  1128            .  S GMTEXT( 1)="* * *  The consul t configur ation is i ncomplete,  requiredd ata is mis sing. * *  *"
  1129            .  S GMTEXT( 2)="* * *  You must e nter a Con fig Name,  Days Cons- >Appt, Day s Appt->No te,    * *  *"
  1130            .  S GMTEXT( 3)="* * *  at least o ne type of  Consult ( Service, P rocedure,e tc.), at l east  * *  *"
  1131            .  S GMTEXT( 4)="* * *  one Clinic  and/or a  Stop Code,  and at le ast one No te Title.         * *  *"
  1132            .  S GMTEXT( 5)="$$EOP"
  1133            .  D HLP^DDS UTL(.GMTEX T)
  1134            .  Q
  1135            Q
  1136    GMRCCB (N ew)
  1137   GMRCCB ;SF VAMC/DAD -  Consult C losure Too l: Data Ga thering ;0 1/20/17 15 :19
  1138    ;;3.0;CON SULT/REQUE ST TRACKIN G;**89**;D EC 27, 199 7;Build 16
  1139    ;Consult  Closure To ol          ;
  1140            ;  IA#    Us age      C omponent
  1141            ;  --------- ---------- --------
  1142            ;   2699 PRI VATE           ^TIU(8 9.25,D0,0
  1143            ;   6742  Co ntrolled S ub  ^TIU(8 925,"ADCPT ",
  1144            ;   2054  Su pported           $$O REF^DILF
  1145            ;   2056  Su pported           $$G ET1^DIQ
  1146            ;   4433  Su pported           $$S DAPI^SDAMA 301
  1147            ;   4837  Pr ivate    ^ GMR(123,"E ",
  1148            ;  10103  Su pported  $ $FMADD^XLF DT
  1149            ;  10103  Su pported  $ $NOW^XLFDT
  1150            ;  10105  Su pported  $ $MIN^XLFMT H
  1151            ;
  1152   GETDATA(GM ROOT,GMTBE G,GMTEND,G M0CFG,GMAP PT,GMNOTE, GMOPUT,GMD LIM) ;
  1153            ;  *** Get c onsults
  1154            N  GM0CON,GM 0DFN,GMCLP R,GMPROC,G MPROT,GMSE RV,GMTCON
  1155            D  CLINLIST^ GMRCCD(GMR OOT,GM0CFG )
  1156            S  GMTCON=GM TBEG-.0000 001
  1157            F   S GMTCON =$O(^GMR(1 23,"E",GMT CON)) Q:(G MTCON'>0)! (GMTCON>(G MTEND+.24) )  D
  1158            .  S GM0CON= 0
  1159            .  F  S GM0C ON=$O(^GMR (123,"E",G MTCON,GM0C ON)) Q:GM0 CON'>0  D
  1160            . . I $$CONS CHEK(GM0CO N,.GMSERV, .GMPROC,.G MPROT,.GMC LPR) D
  1161            . .. S GM0DF N=$$GET1^D IQ(123,GM0 CON,.02,"I ")
  1162            . .. I GM0DF N>0 D
  1163            . ... D APPT CHEK(GMROO T,GM0CFG,G M0DFN,GM0C ON,GMTCON, GMAPPT,GMN OTE,GMOPUT )
  1164            . ... Q
  1165            . .. Q
  1166            . . Q
  1167            .  Q
  1168            Q
  1169            ;
  1170   CONSCHEK(G M0CON,GMSE RV,GMPROC, GMPROT,GMC LPR) ;
  1171            ;  *** Consu lt active  & part of  config?
  1172            N  GMFILE,GM GLOB
  1173            I  $$CONSOKA Y^GMRCCD(G M0CON)>0 D
  1174            .  F GMFILE= 101,123.3  D
  1175            . . S GMGLOB (GMFILE)=$ $GLOBROOT^ GMRCCD(GMF ILE,";")
  1176            . . Q
  1177            .  S GMSERV= $$GET1^DIQ (123,GM0CO N,1,"I")
  1178            .  S GMCLPR= $$GET1^DIQ (123,GM0CO N,1.01,"I" )
  1179            .  S (GMPROC ,GMPROT)=$ $GET1^DIQ( 123,GM0CON ,4,"I")
  1180            .  S GMPROC= $S(GMPROC[ GMGLOB(123 .3):GMPROC ,1:"")
  1181            .  S GMPROT= $S(GMPROT[ GMGLOB(101 ):GMPROT,1 :"")
  1182            .  S GMCLPR( 0)=''$D(^R 1(123.033, GM0CFG,"CL PR","B",+G MCLPR))
  1183            .  S GMSERV( 0)=''$D(^R 1(123.033, GM0CFG,"CO NS","B",+G MSERV))
  1184            .  S GMPROC( 0)=''$D(^R 1(123.033, GM0CFG,"CO NP","B",+G MPROC))
  1185            .  S GMPROT( 0)=''$D(^R 1(123.033, GM0CFG,"PR OT","B",+G MPROT))
  1186            .  S GMSERV= $S(GMSERV( 0):$$GET1^ DIQ(123,GM 0CON,1),1: "")
  1187            .  S GMCLPR= $S(GMCLPR( 0):$$GET1^ DIQ(123,GM 0CON,1.01) ,1:"")
  1188            .  S GMPROC= $S(GMPROC( 0):$$GET1^ DIQ(123,GM 0CON,4),1: "")
  1189            .  S GMPROT= $S(GMPROT( 0):$$GET1^ DIQ(123,GM 0CON,4),1: "")
  1190            .  Q
  1191            E   D
  1192            .  S (GMSERV ,GMPROC,GM PROT,GMCLP R)=""
  1193            .  S (GMSERV (0),GMPROC (0),GMPROT (0),GMCLPR (0))=0
  1194            .  Q
  1195            Q  (GMSERV(0 )!GMPROC(0 )!GMPROT(0 )!GMCLPR(0 ))
  1196            ;
  1197   APPTCHEK(G MROOT,GM0C FG,GM0DFN, GM0CON,GMT CON,GMAPPT ,GMNOTE,GM OPUT) ;
  1198            ;  *** Check  for appts
  1199            N  GMTAPT
  1200            S  GMTAPT=$$ APPTLIST(G MROOT,GM0C FG,GM0DFN, GMTCON,GMA PPT)
  1201            ;  Only seen  Pts
  1202            I  GMAPPT>0  D
  1203            .  ; Pt has  been seen
  1204            .  I GMTAPT> 0 D
  1205            . . D NOTECH EK(GMROOT, GM0CFG,GM0 DFN,GM0CON ,GMTCON,GM TAPT,GMNOT E,GMOPUT)
  1206            . . Q
  1207            .  Q
  1208            ;  Only unse en Pts
  1209            E   D
  1210            .  ; Pt has  NOT been s een
  1211            .  I (GMTAPT '>0)!($$UN SEEN^GMRCC D($P(GMTAP T,U,4))>0)  D
  1212            . . D NOTECH EK(GMROOT, GM0CFG,GM0 DFN,GM0CON ,GMTCON,GM TAPT,GMNOT E,GMOPUT)
  1213            . . Q
  1214            .  Q
  1215            Q
  1216            ;
  1217   NOTECHEK(G MROOT,GM0C FG,GM0DFN, GM0CON,GMT CON,GMTAPT ,GMNOTE,GM OPUT) ;
  1218            ;  *** Check  for notes
  1219            N  GMTNOT
  1220            K  @GMROOT@( "NOTE-LIST ")
  1221            S  GMTNOT=$$ NOTELIST(G MROOT,GM0C FG,GM0DFN, +GMTAPT,+G MTCON,GMOP UT)
  1222            ;  Only Pts  with notes
  1223            I  GMNOTE>0  D
  1224            .  ; Pt has  note
  1225            .  I GMTNOT> 0 D
  1226            . . D SETDAT A(GMROOT,G M0DFN,GM0C ON,GMTAPT, GMTNOT,GMO PUT)
  1227            . . Q
  1228            .  Q
  1229            ;  Only Pts  without no tes
  1230            E   D
  1231            .  ; Pt does  NOT have  note
  1232            .  I GMTNOT' >0 D
  1233            . . I $O(@GM ROOT@("NOT E-LIST",0) )'>0 S @GM ROOT@("NOT E-LIST",1) ="^^*NO NO TE*" ; GMR CC*2.1*1
  1234            . . D SETDAT A(GMROOT,G M0DFN,GM0C ON,GMTAPT, GMTNOT,GMO PUT)
  1235            . . Q
  1236            .  Q
  1237            K  @GMROOT@( "NOTE-LIST ")
  1238            Q
  1239            ;
  1240   APPTLIST(G MROOT,GM0C FG,GM0DFN, GMTCON,GMA PPT) ;
  1241            ;  *** Get P t's appts
  1242            ;  $$APPTLIS T() = Appt Date ^ Cli nIEN ^ Cli nName ^ Ap ptStatInt  ^ ApptStat Ext
  1243            N  GMCLIN,GM DATA,GMDAT E,GMDAYS,G MFRST,GMLA ST
  1244            N  GMLIST,GM SDAM,GMSTA T,GMTAPT,G MVSIT
  1245            S  GMDAYS=$$ GET1^DIQ(1 23.033,GM0 CFG,.04)
  1246            S  GMLAST=$$ FMADD^XLFD T(GMTCON,G MDAYS,0,0, 0)
  1247            S  GMLAST=$$ MIN^XLFMTH (GMLAST,$$ NOW^XLFDT)
  1248            S  GMSDAM("F LDS")="1;2 ;3"
  1249            S  GMSDAM("S ORT")="P"
  1250            S  GMSDAM(1) =GMTCON_"; "_GMLAST
  1251            S  GMSDAM(2) =$$OREF^DI LF($NA(@GM ROOT@("XRE F-CLIN")))
  1252            S  GMSDAM(4) =GM0DFN
  1253            S  GMLIST=$N A(^TMP($J, "SDAMA301" ))
  1254            K  @GMLIST
  1255            S  GMVSIT=""
  1256            I  $$SDAPI^S DAMA301(.G MSDAM)'=-1  D
  1257            .  S GMTAPT= 0,GMFRST=" "
  1258            .  F  S GMTA PT=$O(@GML IST@(GM0DF N,GMTAPT))  Q:(GMTAPT '>0)!(GMVS IT>0)  D
  1259            . . S GMDATA =$G(@GMLIS T@(GM0DFN, GMTAPT))
  1260            . . S GMCLIN =$P($P(GMD ATA,U,2)," ;",1)
  1261            . . S GMSTAT =$P($P(GMD ATA,U,3)," ;",1)
  1262            . . I (GMTAP T>0)&(GMCL IN>0) D
  1263            . .. ; Appt  already us ed?
  1264            . .. I '$D(@ GMROOT@("X REF-APPT", GM0DFN,+GM CLIN,GMTAP T)) D
  1265            . ... ; Save  first can celled/no- show appt
  1266            . ... I (GMF RST="")&($ $UNSEEN^GM RCCD(GMSTA T)>0) S GM FRST=GMDAT A
  1267            . ... ; Appt  kept?
  1268            . ... I $$SE EN^GMRCCD( GMSTAT)>0  D
  1269            . .... ; Mar k appt use d
  1270            . .... S @GM ROOT@("XRE F-APPT",GM 0DFN,+GMCL IN,+GMTAPT )=""
  1271            . .... S GMV SIT=GMDATA
  1272            . .... Q
  1273            . ... Q
  1274            . .. Q
  1275            . . Q
  1276            .  ; (No kep t appt fou nd) & (can celled/no- show appt  found)
  1277            .  I (GMVSIT '>0)&(GMFR ST]"")&(GM APPT'>0) D
  1278            . . S GMTAPT =$P(GMFRST ,U,1)
  1279            . . S GMCLIN =$P(GMFRST ,U,2)
  1280            . . ; Mark a ppt used
  1281            . . S @GMROO T@("XREF-A PPT",GM0DF N,+GMCLIN, +GMTAPT)=" "
  1282            . . S GMVSIT =GMFRST
  1283            . . Q
  1284            .  Q
  1285            K  @GMLIST
  1286            S  GMDATE=$P (GMVSIT,U, 1)
  1287            S  GMCLIN("I ")=$P($P(G MVSIT,U,2) ,";",1)
  1288            S  GMCLIN("E ")=$P($P(G MVSIT,U,2) ,";",2)
  1289            S  GMSTAT("I ")=$P($P(G MVSIT,U,3) ,";",1)
  1290            S  GMSTAT("E ")=$P($P(G MVSIT,U,3) ,";",2)
  1291            S  GMVSIT=GM DATE_U_GMC LIN("I")_U _GMCLIN("E ")_U
  1292            S  GMVSIT=GM VSIT_GMSTA T("I")_U_G MSTAT("E")
  1293            Q  GMVSIT
  1294            ;
  1295   NOTELIST(G MROOT,GM0C FG,GM0DFN, GMTAPT,GMT CON,GMOPUT ) ;
  1296            ;  *** Get P t's notes
  1297            ;  $$NOTELIS T() = RefD ate ^ Titl eIEN ^ Tit leName ^ N oteIEN
  1298            N  GM0NOT,GM CLAS,GMDAT A,GMDATE,G MDAYS,GMIN DX
  1299            N  GMTFIN,GM STAT,GMTIT L,GMTNOT,G M0TTL
  1300            S  GMDATE=$S (GMTAPT>0: GMTAPT,1:G MTCON)
  1301            S  GMDAYS=$$ GET1^DIQ(1 23.033,GM0 CFG,$S(GMT APT>0:.05, 1:.04))
  1302            S  GMTFIN=99 99999-$$FM ADD^XLFDT( GMDATE\1,G MDAYS,0,0, 0)
  1303            D  NOTESTAT^ GMRCCD(.GM STAT)
  1304            S  (GMCLAS,G MTITL)=0
  1305            F   S GMCLAS =$O(^TIU(8 925,"ADCPT ",GM0DFN,G MCLAS)) Q: $$NOTEQUIT (GMCLAS,GM TITL,GMOPU T)  D
  1306            .  S GMSTAT= 0
  1307            .  F  S GMST AT=$O(GMST AT(GMSTAT) ) Q:$$NOTE QUIT(GMSTA T,GMTITL,G MOPUT)  D
  1308            . . S GMTNOT =9999999-( GMDATE\1)
  1309            . . F  S GMT NOT=$O(^TI U(8925,"AD CPT",GM0DF N,GMCLAS,G MSTAT,GMTN OT),-1) Q: $$NOTEQUIT (GMTNOT,GM TITL,GMOPU T)!(GMTNOT <GMTFIN)   D
  1310            . .. S GM0NO T=0
  1311            . .. F  S GM 0NOT=$O(^T IU(8925,"A DCPT",GM0D FN,GMCLAS, GMSTAT,GMT NOT,GM0NOT )) Q:$$NOT EQUIT(GM0N OT,GMTITL, GMOPUT)  D
  1312            . ... ; Note  part of c onfig?
  1313            . ... S GM0T TL=$$GET1^ DIQ(8925,G M0NOT,.01, "I")
  1314            . ... I $D(^ R1(123.033 ,GM0CFG,"N OTE","B",+ GM0TTL)) D
  1315            . .... S GMD ATA=$$GET1 ^DIQ(8925, GM0NOT,130 1,"I")
  1316            . .... S GMD ATA=GMDATA _U_$$GET1^ DIQ(8925,G M0NOT,.01, "I")
  1317            . .... S GMD ATA=GMDATA _U_$$GET1^ DIQ(8925,G M0NOT,.01)
  1318            . .... S GMD ATA=GMDATA _U_GM0NOT
  1319            . .... I ((G MOPUT["I") !(GMOPUT[" P"))&(GMOP UT'["C") D
  1320            . ..... S GM INDX=1+$O( @GMROOT@(" NOTE-LIST" ,1E25),-1)
  1321            . ..... S @G MROOT@("NO TE-LIST",G MINDX)=GMD ATA
  1322            . ..... Q
  1323            . .... ; Not e already  used?
  1324            . .... I '$D (@GMROOT@( "XREF-NOTE ",GM0DFN,G M0NOT)) D
  1325            . ..... ; Ma rk note us ed
  1326            . ..... S @G MROOT@("XR EF-NOTE",G M0DFN,GM0N OT)=""
  1327            . ..... S GM TITL=GMDAT A
  1328            . ..... Q
  1329            . .... Q
  1330            . ... Q
  1331            . .. Q
  1332            . . Q
  1333            .  Q
  1334            Q  GMTITL
  1335            ;
  1336   NOTEQUIT(G MORDR,GMTI TL,GMOPUT)  ;
  1337            ;  *** Stop  note searc h?
  1338            Q  $S(GMORDR '>0:1,GMOP UT["I":0,1 :''GMTITL)
  1339            ;
  1340   SETDATA(GM ROOT,GM0DF N,GM0CON,G MADAT,GMND AT,GMOPUT)  ;
  1341            ;  *** Save  report dat a
  1342            N  GMCLIN,GM CLPR,GMCNA M,GMDATA,G MINDX,GMNA ME
  1343            N  GMNOTE,GM PROC,GMPRO T,GMSERV,G MSSN,GMSTA T
  1344            N  GMTAPT,GM TCON,GMTNO T
  1345            S  GMTCON=$$ GET1^DIQ(1 23,GM0CON, 3,"I")
  1346            S  GMCNAM="* NO CONSULT *"
  1347            I  $$CONSCHE K(GM0CON,. GMSERV,.GM PROC,.GMPR OT,.GMCLPR ) D
  1348            .  I GMCLPR( 0) S GMCNA M=GMCLPR
  1349            .  I GMPROT( 0) S GMCNA M=GMPROT
  1350            .  I GMPROC( 0) S GMCNA M=GMPROC
  1351            .  I GMSERV( 0) S GMCNA M=GMSERV
  1352            .  Q
  1353            S  GMCNAM=GM CNAM_U_(+G M0CON)
  1354            ;
  1355            S  GMNAME=$$ GET1^DIQ(2 ,GM0DFN,.0 1)
  1356            S  GMNAME=$S (GMNAME]"" :GMNAME,1: "*NO PATIE NT*")
  1357            S  GMNAME=GM NAME_U_(+G M0DFN)
  1358            S  GMSSN=$$G ET1^DIQ(2, GM0DFN,.09 )
  1359            ;
  1360            S  GMCLIN=$P (GMADAT,U, 3)
  1361            S  GMCLIN=$S (GMCLIN]"" :GMCLIN,1: "*NO CLINI C*")
  1362            S  GMCLIN=GM CLIN_U_(+$ P(GMADAT,U ,2))
  1363            S  GMTAPT=$P (GMADAT,U, 1)
  1364            S  GMSTAT("I ")=$P(GMAD AT,U,4)
  1365            S  GMSTAT("E ")=$P(GMAD AT,U,5)
  1366            ;
  1367            S  GMNOTE=$P (GMNDAT,U, 3)
  1368            S  GMNOTE=$S (GMNOTE]"" :GMNOTE,1: "*NO NOTE* ")
  1369            S  GMNOTE=GM NOTE_U_(+$ P(GMNDAT,U ,2))_U_(+$ P(GMNDAT,U ,4))
  1370            S  GMTNOT=$P (GMNDAT,U, 1)
  1371            ;
  1372            S  GMDATA=GM SSN_U_GMTC ON_U_GMTAP T_U
  1373            S  GMDATA=GM DATA_GMSTA T("I")_U_G MSTAT("E") _U
  1374            S  GMDATA=GM DATA_GMTNO T_U_GM0CON _U_(+$P(GM NDAT,U,4)) _U
  1375            S  GMDATA=GM DATA_"0"_U _""
  1376            ;
  1377            ;  Data = SS N ^ Consul tDate ^ Ap ptDate ^ A pptStatusI nt ^ ApptS tatusExt ^
  1378            ;         No teDate ^ C onsultIEN  ^ NoteIEN  ^ ConsultU pdated ^ C onsultUpda teMsg
  1379            ;
  1380            I  ((GMOPUT[ "I")!(GMOP UT["P"))&( GMOPUT'["C ") D
  1381            .  S GMINDX= 0
  1382            .  F  S GMIN DX=$O(@GMR OOT@("NOTE -LIST",GMI NDX)) Q:GM INDX'>0  D
  1383            . . S GMNOTE =$G(@GMROO T@("NOTE-L IST",GMIND X))
  1384            . . S $P(GMD ATA,U,6)=$ P(GMNOTE,U ,1)
  1385            . . S $P(GMD ATA,U,8)=$ P(GMNOTE,U ,4)
  1386            . . S GMNOTE =$P(GMNOTE ,U,3)_U_$P (GMNOTE,U, 2)_U_$P(GM NOTE,U,4)
  1387            . . I GMOPUT ["I" D
  1388            . .. ; Root( "DATA", Pt Name ^ PtI EN, Consul t ^ Consul tIEN,
  1389            . .. ;       Title ^ Ti tleIEN ^ N oteIEN) =  Data
  1390            . .. S @GMRO OT@("DATA" ,GMNAME,GM CNAM,GMNOT E)=GMDATA
  1391            . .. Q
  1392            . . E  D
  1393            . .. ; Root( "DATA", Co nsult ^ Co nsultIEN,  Clin ^ Cli nIEN,
  1394            . .. ;       PtName ^ P tIEN, Titl e ^ TitleI EN ^ NoteI EN) = Data
  1395            . .. S @GMRO OT@("DATA" ,GMCNAM,GM CLIN,GMNAM E,GMNOTE)= GMDATA
  1396            . .. Q
  1397            . . Q
  1398            .  Q
  1399            E   D
  1400            .  ; Root("D ATA", Cons ult ^ Cons ultIEN, Cl in ^ ClinI EN,
  1401            .  ;      Ti tle ^ Titl eIEN ^ Not eIEN, PtNa me ^ PtIEN ) = Data
  1402            .  S @GMROOT @("DATA",G MCNAM,GMCL IN,GMNOTE, GMNAME)=GM DATA
  1403            .  Q
  1404            S  @GMROOT@( "XREF-DFN" ,GM0DFN)=" "
  1405            Q
  1406   GMRCCC (Ne w)
  1407     GMRCCC ; SFVAMC/DAD  - Consult  Closure T ool: Outpu t Data ;01 /20/17 15: 19
  1408      ;;3.0;C ONSULT/REQ UEST TRACK ING;**89** ;DEC 27, 1 997;Build  16    
  1409     ;Consult  Closure T ool   
  1410     ; IA#     Usage       Componen t
  1411            ;  --------- ---------- --------
  1412            ;   2699  Pr ivate       ^TIU(8925 ,D0,0
  1413            ;   3005  Co ntroled  ^ OR(100.21
  1414            ;   2051  Su pported  $ $FIND1^DIC
  1415            ;   2051  Su pported  L IST^DIC
  1416            ;   2053  Su pported  U PDATE^DIE
  1417            ;   2054  Su pported  C LEAN^DILF
  1418            ;   2056  Su pported  $ $GET1^DIQ
  1419            ;   2980  Co ntrolled $ $SFILE^GMR CGUIB
  1420            ;   3473  Pr ivate    G ET^GMRCTIU
  1421            ;  10026  Su pported  ^ DIR
  1422            ;  10081  Su pported  S ETUP^XQALE RT
  1423            ;  10089  Su pported  ^ %ZISC
  1424            ;  10103  Su pported  $ $DT^XLFDT
  1425            ;  10103  Su pported  $ $FMTE^XLFD T
  1426            ;  10103  Su pported  $ $NOW^XLFDT
  1427            ;
  1428   PRNTDATA(G MROOT,GMTB EG,GMTEND, GM0CFG,GMA PPT,GMNOTE ,GMDLIM) ;
  1429            ;  *** Print  the data
  1430            N  GMCLIN,GM CONS,GMEXI T,GMNAME,G MPAGE,GMTI TL
  1431            U  IO
  1432            S  (GMEXIT,G MPAGE)=0
  1433            D  HEADER(.G MPAGE,GMTB EG,GMTEND, GM0CFG,GMA PPT,GMNOTE ,GMDLIM)
  1434            S  GMCONS=""
  1435            I  $O(@GMROO T@("DATA", GMCONS))=" " D
  1436            .  D WRITE(" !!","*** N o data fou nd ***",21 ,GMDLIM)
  1437            .  Q
  1438            F   S GMCONS =$O(@GMROO T@("DATA", GMCONS)) Q :GMCONS="" !GMEXIT  D
  1439            .  S GMCLIN= ""
  1440            .  F  S GMCL IN=$O(@GMR OOT@("DATA ",GMCONS,G MCLIN)) Q: GMCLIN=""! GMEXIT  D
  1441            . . S GMNAME =""
  1442            . . F  S GMN AME=$O(@GM ROOT@("DAT A",GMCONS, GMCLIN,GMN AME)) Q:GM NAME=""!GM EXIT  D
  1443            . .. S GMTIT L=""
  1444            . .. F  S GM TITL=$O(@G MROOT@("DA TA",GMCONS ,GMCLIN,GM NAME,GMTIT L)) Q:GMTI TL=""!GMEX IT  D
  1445            . ... D PRIN T(GMROOT,G MCONS,GMCL IN,GMTITL, GMNAME,GMD LIM)
  1446            . ... D PAUS E(.GMEXIT, .GMPAGE,GM TBEG,GMTEN D,GM0CFG,G MAPPT,GMNO TE,GMDLIM)
  1447            . ... Q
  1448            . .. Q
  1449            . . Q
  1450            .  Q
  1451            D  ^%ZISC
  1452            Q
  1453            ;
  1454   PRINT(GMRO OT,GMCONS, GMCLIN,GMT ITL,GMNAME ,GMDLIM) ;
  1455            ;  *** Print  one recor d
  1456            ;  Array("DA TA", Consu lt^IEN, Cl inic^IEN,  Note^IEN,  Patient^IE N) =
  1457            ;    SSN ^ C onsultDate  ^ ApptDat e ^ ApptSt atusInt ^  ApptStatus Ext ^ Note Date
  1458            N  GMDATA
  1459            S  GMDATA=$G (@GMROOT@( "DATA",GMC ONS,GMCLIN ,GMNAME,GM TITL))
  1460            D  WRITE("!! ",$P(GMNAM E,U,1),30, GMDLIM) ;  Pt Name
  1461            D  WRITE("?3 4",$P(GMDA TA,U,1),10 ,GMDLIM) ;  SSN
  1462            D  WRITE("?4 8",$P(GMCO NS,U,1),63 ,GMDLIM) ;  Consult T itle
  1463            D  WRITE("?1 15",$$DATE ($P(GMDATA ,U,2),"2MZ "),14,GMDL IM) ; Cons ult Date
  1464            D  WRITE("!" ,$P(GMCLIN ,U,1),30,G MDLIM) ; A ppt Clinic
  1465            D  WRITE("?3 4",$$DATE( $P(GMDATA, U,3),"2MZ" ),14,GMDLI M) ; Appt  Date
  1466            D  WRITE("?6 5",$P(GMDA TA,U,5),33 ,GMDLIM) ;  Appt Stat us
  1467            D  WRITE("!" ,$P(GMTITL ,U,1),60,G MDLIM) ; N ote Title
  1468            D  WRITE("?6 5",$$DATE( $P(GMDATA, U,6),"2MZ" ),14,GMDLI M) ; Note  Date
  1469            D  WRITE("?1 15",$$BOOL ($P(GMDATA ,U,9)),3,G MDLIM) ; C onsult Upd ated
  1470            W :GMDLIM>0  !
  1471            Q
  1472            ;
  1473   DATE(GMDAT E,GMFORM)  ;
  1474            ;  *** Forma t dates
  1475            Q  $S(GMDATE >0:$$FMTE^ XLFDT(GMDA TE,GMFORM) ,1:"")
  1476            ;
  1477   BOOL(GMBOO L) ;
  1478            ;  *** Forma t boolean
  1479            Q  $S(''GMBO OL:"Yes",1 :"No")
  1480            ;
  1481   PAUSE(GMEX IT,GMPAGE, GMTBEG,GMT END,GM0CFG ,GMAPPT,GM NOTE,GMDLI M) ;
  1482            ;  *** Pause  at end of  page
  1483            N  DIR,DIROU T,DIRUT,DT OUT,DUOUT, X,Y
  1484            I  (GMDLIM'> 0)&($Y>(IO SL-5)) D
  1485            .  I $E(IOST ,1,2)="C-"  K DIR S D IR(0)="E"  D ^DIR S G MEXIT='$G( Y)
  1486            .  I GMEXIT' >0 D HEADE R(.GMPAGE, GMTBEG,GMT END,GM0CFG ,GMAPPT,GM NOTE,GMDLI M)
  1487            .  Q
  1488            Q
  1489            ;
  1490   HEADER(GMP AGE,GMTBEG ,GMTEND,GM 0CFG,GMAPP T,GMNOTE,G MDLIM) ;
  1491            ;  *** Page  header
  1492            S  GMPAGE=GM PAGE+1
  1493            I  (GMDLIM'> 0)&(($E(IO ST,1,2)="C -")!(GMPAG E>1)) W @I OF
  1494            D  CENTER("C onsult Clo sure Tool" ,GMDLIM)
  1495            I  GMDLIM'>0  D WRITE(" ?115",$$DA TE($$DT^XL FDT,"2DZ") ,8,GMDLIM)
  1496            D  CENTER("C onsults fr om "_$$DAT E(GMTBEG," 2DZ")_" to  "_$$DATE( GMTEND,"2D Z"),GMDLIM )
  1497            I  GMDLIM'>0  D WRITE(" ?115","Pag e: "_GMPAG E,9,GMDLIM )
  1498            D  CENTER("C onsult con figuration : "_$$GET1 ^DIQ(123.0 33,GM0CFG, .01),GMDLI M)
  1499            D  CENTER("A ppointment  status: " _$S(GMAPPT >0:"Seen", 1:"Not see n")_" in c linic",GMD LIM)
  1500            D  CENTER("N ote status : "_$S(GMN OTE>0:"Has ",1:"Does  not have") _" a note" ,GMDLIM)
  1501            D  WRITE("!! ","Patient  Name",12, GMDLIM)
  1502            D  WRITE("?3 4","SSN",3 ,GMDLIM)
  1503            D  WRITE("?4 8","Consul t Title",1 3,GMDLIM)
  1504            D  WRITE("?1 15","Consu lt Date",1 2,GMDLIM)
  1505            D  WRITE("!" ,"Appt Cli nic",11,GM DLIM)
  1506            D  WRITE("?3 4","Appt D ate",9,GMD LIM)
  1507            D  WRITE("?6 5","Appt S tatus",11, GMDLIM)
  1508            D  WRITE("!" ,"Note Tit le",10,GMD LIM)
  1509            D  WRITE("?6 5","Note D ate",9,GMD LIM)
  1510            D  WRITE("?1 15","Consu lt Updated ",15,GMDLI M)
  1511            I  GMDLIM'>0  D WRITE(" !",$TR($J( "",IOM),"  ","-"),IOM ,GMDLIM)
  1512            W :GMDLIM>0  !
  1513            Q
  1514            ;
  1515   WRITE(GMFM T,GMDATA,G MLEN,GMDLI M) ;
  1516            ;  *** Outpu t the data
  1517            W :(GMDLIM'> 0)&(GMLEN> 0) @GMFMT
  1518            W  $S(GMDLIM '>0:$E(GMD ATA,1,GMLE N),1:GMDAT A)
  1519            W :GMDLIM>0  U
  1520            Q
  1521            ;
  1522   CENTER(GMD ATA,GMDLIM ) ;
  1523            ;  *** Cente r data
  1524            D  WRITE("!? "_(IOM-$L( GMDATA)\2) ,GMDATA,$L (GMDATA),G MDLIM)
  1525            W :GMDLIM>0  !
  1526            Q
  1527            ;
  1528   MAKETEAM(G MROOT,GM0C FG) ;
  1529            ;  *** Updat e the CPRS  team
  1530            N  GM0DFN,GM 0TM,GM1TM, GMDPT,GMIE NS,GMINDX, GMLIST
  1531            ;  Is there  a team ass ociated wi th the sel ected conf iguration?
  1532            I  $$ISTM^GM RCCD(GM0CF G)>0 D
  1533            .  S GM0TM=$ $GET1^DIQ( 123.033,GM 0CFG,.03," I")
  1534            .  S GMLIST= $NA(^TMP(" DILIST",$J ))
  1535            .  K @GMLIST ,@GMROOT@( "TEAM-FDA" )
  1536            .  S GMDPT=$ $GLOBROOT^ GMRCCD(2," ;")
  1537            .  ; Get cur rent list  of patient s in team
  1538            .  D LIST^DI C(100.2101 ,","_GM0TM _",")
  1539            .  D CLEAN^D ILF
  1540            .  S GMINDX= 0
  1541            .  ; Make FD A array to  delete cu rrent pati ents from  team
  1542            .  F  S GMIN DX=$O(@GML IST@(2,GMI NDX)) Q:GM INDX'>0  D
  1543            . . S GM1TM= $G(@GMLIST @(2,GMINDX ))
  1544            . . S GMIENS =GM1TM_"," _GM0TM_","
  1545            . . I GM1TM> 0 S @GMROO T@("TEAM-F DA",100.21 01,GMIENS, .01)="@"
  1546            . . Q
  1547            .  K @GMLIST
  1548            .  ; Delete  current pa tients fro m team
  1549            .  I $D(@GMR OOT@("TEAM -FDA")) D
  1550            . . D UPDATE ^DIE("",$N A(@GMROOT@ ("TEAM-FDA ")))
  1551            . . D CLEAN^ DILF
  1552            . . Q
  1553            .  K @GMROOT @("TEAM-FD A")
  1554            .  S GM0DFN= 0
  1555            .  ; Make FD A array to  add new p atients to  team
  1556            .  F  S GM0D FN=$O(@GMR OOT@("XREF -DFN",GM0D FN)) Q:GM0 DFN'>0  D
  1557            . . S GMIENS ="+"_GM0DF N_","_GM0T M_","
  1558            . . S @GMROO T@("TEAM-F DA",100.21 01,GMIENS, .01)=GM0DF N_GMDPT
  1559            . . Q
  1560            .  ; Add new  patients  to team
  1561            .  I $D(@GMR OOT@("TEAM -FDA")) D
  1562            . . D UPDATE ^DIE("",$N A(@GMROOT@ ("TEAM-FDA ")))
  1563            . . D CLEAN^ DILF
  1564            . . Q
  1565            .  K @GMROOT @("TEAM-FD A")
  1566            .  D TEAMALR T(GM0CFG)
  1567            .  Q
  1568            Q
  1569            ;
  1570   TEAMALRT(G M0CFG) ;
  1571            ;  *** Alert  users whe n team is  updated
  1572            N  GM0DUZ,GM 0TM,GMINDX ,GMLIST,XQ A,XQAARCH, XQADATA
  1573            N  XQAFLG,XQ AID,XQAMSG ,XQAOPT,XQ AROU,XQASU PV,XQASURO
  1574            S  GM0TM=$$G ET1^DIQ(12 3.033,GM0C FG,.03,"I" )
  1575            S  GMLIST=$N A(^TMP("DI LIST",$J))
  1576            K  @GMLIST
  1577            D  LIST^DIC( 100.212,", "_GM0TM_", ")
  1578            D  CLEAN^DIL F
  1579            S  GMINDX=0
  1580            F   S GMINDX =$O(@GMLIS T@(2,GMIND X)) Q:GMIN DX'>0  D
  1581            .  S GM0DUZ= $G(@GMLIST @(2,GMINDX ))
  1582            .  I GM0DUZ> 0 S XQA(GM 0DUZ)=""
  1583            .  Q
  1584            K  @GMLIST
  1585            S  GM0DUZ=$$ GET1^DIQ(1 00.21,GM0T M,1.6,"I")
  1586            I  GM0DUZ>0  S XQA(GM0D UZ)=""
  1587            S  XQA(DUZ)= ""
  1588            S  XQAMSG="C onsult Clo sure Tool  has update d '"
  1589            S  XQAMSG=XQ AMSG_$$GET 1^DIQ(123. 033,GM0CFG ,.03)_"' t eam"
  1590            S  XQAID=$T( +0)_";"_DU Z_";"_$$NO W^XLFDT
  1591            D  SETUP^XQA LERT
  1592            Q
  1593            ;
  1594   CONSUPDT(G MROOT) ;
  1595            ;  *** Updat e the cons ults non-i nteractive ly
  1596            N  GM0CON,GM 0NOT,GMCLI N,GMCONS,G MDATA
  1597            N  GMMSG,GMN AME,GMTITL ,GMUPDT
  1598            S  GMCONS=""
  1599            F   S GMCONS =$O(@GMROO T@("DATA", GMCONS)) Q :GMCONS=""   D
  1600            .  S GMCLIN= ""
  1601            .  F  S GMCL IN=$O(@GMR OOT@("DATA ",GMCONS,G MCLIN)) Q: GMCLIN=""   D
  1602            . . S GMTITL =""
  1603            . . F  S GMT ITL=$O(@GM ROOT@("DAT A",GMCONS, GMCLIN,GMT ITL)) Q:GM TITL=""  D
  1604            . .. S GMNAM E=""
  1605            . .. F  S GM NAME=$O(@G MROOT@("DA TA",GMCONS ,GMCLIN,GM TITL,GMNAM E)) Q:GMNA ME=""  D
  1606            . ... S GMDA TA=$G(@GMR OOT@("DATA ",GMCONS,G MCLIN,GMTI TL,GMNAME) )
  1607            . ... S GM0C ON=$P(GMDA TA,U,7)
  1608            . ... S GM0N OT=$P(GMDA TA,U,8)
  1609            . ... I (GM0 CON>0)&(GM 0NOT>0) D
  1610            . .... S GMU PDT=$$CONU PDT(GM0CON ,GM0NOT,.G MMSG)
  1611            . .... S $P( GMDATA,U,9 ,10)=GMUPD T_U_$G(GMM SG)
  1612            . .... S @GM ROOT@("DAT A",GMCONS, GMCLIN,GMT ITL,GMNAME )=GMDATA
  1613            . .... Q
  1614            . ... Q
  1615            . .. Q
  1616            . . Q
  1617            .  Q
  1618            Q
  1619            ;
  1620   CONUPDT(GM 0CON,GM0NO T,GMMSG) ;
  1621            ;  *** Updat e a consul t
  1622            N  GMALRT,GM AUTH,GMDUZ ,GMFIND,GM NOW
  1623            N  GMOKAY,GM STAT,GMTO, GMRCADUZ K  GMMSG
  1624            ;  Get note  status, co mpute cons ult status
  1625            D  NOTESTAT^ GMRCCD(.GM STAT)
  1626            S  GMAUTH=$$ GET1^DIQ(8 925,GM0NOT ,1202,"I")
  1627            S  GMSTAT=$$ GET1^DIQ(8 925,GM0NOT ,.05,"I")
  1628            I  $D(GMSTAT (+GMSTAT)) #2>0 S GMS TAT="COMPL ETED"
  1629            E   S GMSTAT ="INCOMPLE TE"
  1630            ;  Update a  consult wi th a TIU n ote
  1631            D  GET^GMRCT IU(GM0CON, GM0NOT,GMS TAT,GMAUTH )
  1632            ;  Get recip ients of c onsult not ification
  1633            D  EN^GMRCT( $$GET1^DIQ (123,GM0CO N,1,"I"))
  1634            S  (GMTO,GMD UZ)=""
  1635            F   S GMDUZ= $O(GMRCADU Z(GMDUZ))  Q:GMDUZ'>0   D
  1636            .  S GMTO=GM TO_GMDUZ_$ S($O(GMRCA DUZ(GMDUZ) )>0:";",1: "")
  1637            .  Q
  1638            S  GMALRT=$S (GMSTAT="C OMPLETED": 0,1:1)
  1639            S  GMFIND="U "
  1640            S  GMNOW=$$N OW^XLFDT
  1641            S  GMMSG(1)= "Administr ative clos ure perfor med"
  1642            S  GMMSG(2)= "by the Co nsult Clos ure Tool."
  1643            S  GMSTAT=$$ FIND1^DIC( 123.1,""," X","COMPLE TE/UPDATE" ,"B")
  1644            ;  Administr ative comp letion of  a consult
  1645            S  GMOKAY=$$ SFILE^GMRC GUIB(GM0CO N,GMSTAT,G MFIND,GMAU TH,DUZ,.GM MSG,GMALRT ,GMTO,GMNO W)
  1646            K  GMMSG S G MMSG=$P(GM OKAY,U,2)
  1647            Q  '$P(GMOKA Y,U,1)
  1648   GMRCCD (Ne w)
  1649   GMRCCD ;SF VAMC/DAD -  Consult C losure Too l: Interac tive Consu lt Update  ;01/20/17  15:19
  1650            ; ;3.0;CONSU LT/REQUEST  TRACKING; **89**;DEC  27, 1997; Build 16
  1651            ; Consult Cl osure Tool         
  1652            ;  IA#    Us age      C omponent
  1653            ;  --------- ---------- --------
  1654            ;   4836  Pr ivate        $$GET1^D IQ(123.033 ,GM0CFG,.0 6,"I")
  1655            ;   3005  Co ntrolled   $$GET1^DIQ (123.033,G M0CFG,".03 :1","I")
  1656            ;  10040  Su pported  $ $GET1^DIQ( 123.033,GM 0CFG,.06
  1657            ;   4072  Co ntrolled    $$FIND1^D IC(8925.6
  1658            ;   2051  Su pported     $$FIND1^D IC
  1659            ;   2051  Su pported     LIST^DIC
  1660            ;   2052  Su pported     $$GET1^DI D
  1661            ;   2054  Su pported     CLEAN^DIL F
  1662            ;   2056  Su pported     $$GET1^DI Q
  1663            ;   2607  Su pported     DOCLIST^D DBR
  1664            ;   2832  Co ntrolled    RPC^TIUSR V
  1665            ;   2925  Co ntrolled    DT^GMRCSL M2
  1666            ;  10026  Su pported     ^DIR
  1667            ;  10086  Su pported     HOME^%ZIS
  1668            ;  10096  Su pported     ^%ZOSF(
  1669            ;
  1670   INTERACT(G MROOT) ;
  1671            ;  *** Inter active con sult updat e
  1672            N  GM0CON,GM 0NOT,GMCCN T,GMCONS,G MCRPT,GMDO CS
  1673            N  GMEXIT,GM INDX,GMNAM E,GMNCNT,G MNOTE,GMNR PT
  1674            N  GMNTXT,GM PCNT,GMTEX T,GMTITL,G MRCOER,GMR CQUT
  1675            D  HOME^%ZIS
  1676            S  GMDOCS=$N A(@GMROOT@ ("DOCS-LIS T"))
  1677            S  GMNRPT=$N A(@GMROOT@ ("NOTE-TEX T"))
  1678            S  GMCRPT=$N A(^TMP("GM RCR",$J,"D T"))
  1679            S  GMNOTE=$N A(^TMP("TI UAUDIT",$J ))
  1680            D  COUNT(GMR OOT,.GMPCN T,.GMCCNT, .GMNCNT)
  1681            S  GMPCNT(0) =GMPCNT
  1682            S  GMCCNT(0) =GMCCNT
  1683            S  GMNCNT(0) =GMNCNT
  1684            K  GMTEXT
  1685            S  GMTEXT(1) ="The Cons ult Closur e Tool has  identifie d"
  1686            S  GMTEXT(2) ="  Patien ts: "_$J(G MPCNT,4)
  1687            S  GMTEXT(3) ="  Consul ts: "_$J(G MCCNT,4)
  1688            S  GMTEXT(4) ="  Notes:     "_$J(G MNCNT,4)
  1689            S  GMTEXT(5) ="that mee t your sel ected crit eria."
  1690            S  GMTEXT(6) =""
  1691            S  GMTEXT="E nter RETUR N to conti nue: "
  1692            D  HANGMSG(. GMTEXT,$G( DTIME,900) ,1)
  1693            S  GMNAME="" ,(GMEXIT,G MPCNT,GMCC NT,GMNCNT) =0
  1694            I  $O(@GMROO T@("DATA", GMNAME))=" " D
  1695            .  K GMTEXT  S GMTEXT=" *** No dat a found ** *"
  1696            .  D HANGMSG (.GMTEXT,0 ,1)
  1697            .  Q
  1698            F   S GMNAME =$O(@GMROO T@("DATA", GMNAME)) Q :(GMNAME=" ")!(GMEXIT >0)  D
  1699            .  S GMPCNT= GMPCNT+1
  1700            .  S GMCONS= ""
  1701            .  F  S GMCO NS=$O(@GMR OOT@("DATA ",GMNAME,G MCONS)) Q: (GMCONS="" )!(GMEXIT> 0)  D
  1702            . . S GMCCNT =GMCCNT+1
  1703            . . K @GMCRP T,@GMDOCS, @GMNRPT
  1704            . . ; Get co nsult text
  1705            . . S GM0CON =$P(GMCONS ,U,2)
  1706            . . S GMRCOE R=2
  1707            . . K GMRCQU T
  1708            . . D DT^GMR CSLM2(GM0C ON)
  1709            . . I $G(GMR CQUT)'>0 D
  1710            . .. S GMTIT L="",GMIND X=0
  1711            . .. F  S GM TITL=$O(@G MROOT@("DA TA",GMNAME ,GMCONS,GM TITL)) Q:( GMTITL="") !(GMEXIT>0 )  D
  1712            . ... S GMNC NT=GMNCNT+ 1
  1713            . ... S GM0N OT=$P(GMTI TL,U,3)
  1714            . ... ; Buil d browser  doc list
  1715            . ... I (GM0 CON>0)&(GM 0NOT>0) D
  1716            . .... S GMI NDX=GMINDX +1
  1717            . .... ; Add  consult t o doc list
  1718            . .... S GMT EXT="Consu lt Narrati ve"
  1719            . .... S GMT EXT=GMTEXT _" ("_GMCC NT_" of "_ GMCCNT(0)_ ")"
  1720            . .... S @GM DOCS@(GMTE XT)=GMCRPT
  1721            . .... ; Get  progress  note text
  1722            . .... K @GM NOTE
  1723            . .... D RPC ^TIUSRV(.G MNOTE,GM0N OT)
  1724            . .... S GMN TXT=$NA(@G MNRPT@(GM0 NOT))
  1725            . .... M @GM NTXT=@GMNO TE
  1726            . .... K @GM NOTE
  1727            . .... ; Add  progress  note to do c list
  1728            . .... S GMT EXT="Note  "_$TR($J(G MINDX,2),"  ","0")
  1729            . .... S GMT EXT=GMTEXT _": "_$P(G MTITL,U,1)
  1730            . .... S @GM DOCS@(GMTE XT)=GMNTXT
  1731            . .... Q
  1732            . ... Q
  1733            . .. D SHOWP ICK(GMDOCS ,GM0CON,.G MEXIT)
  1734            . .. Q
  1735            . . K @GMCRP T,@GMDOCS, @GMNRPT
  1736            . . Q
  1737            .  Q
  1738            I  GMEXIT'>0  D
  1739            .  K GMTEXT  S GMTEXT=" *** Done * **"
  1740            .  D HANGMSG (.GMTEXT,0 ,0)
  1741            .  Q
  1742            Q
  1743            ;
  1744   SHOWPICK(G MROOT,GM0C ON,GMEXIT)  ;
  1745            ;  *** Show  consult &  progress n otes
  1746            ;  *** Pick  progress n ote to clo se consult
  1747            I  $O(@GMROO T@(""))]""  F  D  Q:G MEXIT'="?"
  1748            .  D SHOWNOT E(GMROOT,G M0CON)
  1749            .  D PICKNOT E(GMROOT,G M0CON,.GME XIT)
  1750            .  Q
  1751            Q
  1752            ;
  1753   SHOWNOTE(G MROOT,GM0C ON) ;
  1754            ;  *** Show  consult &  progress n otes to us er
  1755            N  GMLINE,DI R,DIROUT,D IRUT,DTOUT ,DUOUT,X,Y
  1756            D  HEADER(GM 0CON,.GMLI NE)
  1757            D  FOOTER(IO SL-2)
  1758            D  DOCLIST^D DBR(GMROOT ,"R",GMLIN E+2,IOSL-2 )
  1759            Q
  1760            ;
  1761   PICKNOTE(G MROOT,GM0C ON,GMEXIT)  ;
  1762            ;  *** Pick  progress n ote to clo se consult
  1763            N  GM0NOT,GM BELL,GMGLO B,GMINDX,G MMAXX
  1764            N  GMMSGS,GM TEXT,GMTIM E,GMTITL
  1765            N  DIR,DIROU T,DIRUT,DT OUT,DUOUT, X,Y
  1766            ;  Build rea der doc li st
  1767            S  DIR("A")= "Select NO TE TO CLOS E CONSULT:  "
  1768            S  DIR("A",1 )="Select  the note t o close th e consult"
  1769            S  DIR("A",2 )=" "
  1770            S  DIR("A",3 )="  0 - D o not clos e the cons ult"
  1771            S  GMTITL="N ote 00: ", GMINDX=0
  1772            F   S GMTITL =$O(@GMROO T@(GMTITL) ) Q:GMTITL =""  D
  1773            .  ; The doc  list data  is a clos ed global  root speci fying
  1774            .  ; the loc ation of t he progres s note tex t block.   The last
  1775            .  ; subscri pt of data  root is t he IEN of  the progre ss note.
  1776            .  ; @GMROOT @(Document Title) = A rrayName(. ..,Progres sNoteIEN)
  1777            .  S GMGLOB= $G(@GMROOT @(GMTITL))
  1778            .  S GM0NOT= $QS(GMGLOB ,$QL(GMGLO B))
  1779            .  I GM0NOT> 0 D
  1780            . . S GMINDX =GMINDX+1
  1781            . . S DIR("A ",3+GMINDX )=$J(GMIND X,3)_" - " _GMTITL
  1782            . . ; IndexN umber to P rogressNot eIEN^NoteT itle mappi ng array
  1783            . . S GM0NOT (GMINDX)=G M0NOT_U_GM TITL
  1784            . . Q
  1785            .  Q
  1786            S  GMMAXX=GM INDX+1
  1787            S  DIR("A",3 +GMINDX+1) =$J(GMMAXX ,3)_" - Re display th e consult/ progress n ote(s)"
  1788            S  DIR("A",3 +GMINDX+2) ="  ^ - Ex it the Con sult Closu re Tool"
  1789            S  DIR("A",3 +GMINDX+3) =" "
  1790            S  DIR("B")= GMMAXX
  1791            S  DIR(0)="N OA^0:"_GMM AXX_":0^K: X'?1.N X"
  1792            S  DIR("?")= "^D HEADER ^GMRCCD(GM 0CON)"
  1793            ;  Display c onsult clo sure promp t screen
  1794            D  HEADER(GM 0CON)
  1795            W  ! D ^DIR  S GMINDX=+ $G(Y)
  1796            S  GMEXIT=$S ($$DIREXIT ^GMRCCA>0: 1,GMINDX=G MMAXX:"?", 1:0)
  1797            K  GMTEXT S  GMTIME=3,G MBELL=0
  1798            I  GMEXIT=0  D
  1799            .  S GM0NOT= +$P($G(GM0 NOT(GMINDX )),U,1)
  1800            .  I (GM0CON >0)&(GM0NO T>0) D
  1801            . . ; Attemp t to close  consult
  1802            . . I $$CONU PDT^GMRCCC (GM0CON,GM 0NOT,.GMMS GS)>0 D
  1803            . .. S GMTEX T(1)="***  The consul t has been  closed ** *"
  1804            . .. S GMTEX T="Selecti on: "_$P(G M0NOT(GMIN DX),U,2)
  1805            . .. Q
  1806            . . E  D
  1807            . .. S GMTIM E=$G(DTIME ,900),GMBE LL=1
  1808            . .. S GMTEX T(1)="***  The consul t has NOT  been close d ***"
  1809            . .. S GMTEX T(2)="Reas on: "_$S($ G(GMMSGS)] "":GMMSGS, 1:"Unknown !")
  1810            . .. S GMTEX T(3)="Sele ction: "_$ P(GM0NOT(G MINDX),U,2 )
  1811            . .. S GMTEX T(4)=""
  1812            . .. S GMTEX T="Enter R ETURN to c ontinue: "
  1813            . .. Q
  1814            . . Q
  1815            .  E  D
  1816            . . S GMTEXT ="*** No a ction take n on the c onsult *** "
  1817            . . Q
  1818            .  Q
  1819            E   D
  1820            .  I GMEXIT> 0 D
  1821            . . S GMTIME =0
  1822            . . S GMTEXT ="*** Exit ing the Co nsult Clos ure Tool * **"
  1823            . . Q
  1824            .  Q
  1825            D  HANGMSG(. GMTEXT,GMT IME,GMBELL )
  1826            Q
  1827            ;
  1828   HEADER(GM0 CON,GMLINE ) ;
  1829            ;  *** Pt na me header
  1830            W  @IOF,"Con sult closu re for pat ient: "
  1831            W  $$GET1^DI Q(123,GM0C ON,.02)
  1832            W  " (",$$GE T1^DIQ(123 ,GM0CON,". 02:.0905") ,") "
  1833            W  $$DATE^GM RCCC($$GET 1^DIQ(123, GM0CON,".0 2:.03","I" ),"5DZ")
  1834            W  !,$$GET1^ DIQ(123,GM 0CON,1)
  1835            W  " (",$$GE T1^DIQ(123 ,GM0CON,"8 :.1"),") "
  1836            W  $$DATE^GM RCCC($$GET 1^DIQ(123, GM0CON,3," I"),"5DZ")
  1837            S  GMLINE=$Y
  1838            Q
  1839            ;
  1840   FOOTER(GML INE) ;
  1841            ;  *** Page  footer ins tructions
  1842            F   Q:$Y'<(G MLINE-1)   W !
  1843            W  !,"Use <P F1>S to Sw itch betwe en views o f the cons ult and pr ogress not e(s)"
  1844            W  !,"Use R  to Return  to the pre viously vi ewed consu lt or prog ress note( s)"
  1845            Q
  1846            ;
  1847   HANGMSG(GM TEXT,GMTIM E,GMBELL)  ;
  1848            ;  *** Hang  a message  on the scr een for a  time
  1849            N  DIR,DIROU T,DIRUT,DT OUT,DUOUT, X,Y
  1850            I  $G(GMTEXT )]"" D
  1851            .  I $G(GMBE LL)>0 S GM TEXT=GMTEX T_$C(7)
  1852            .  S DIR(0)= "EA"
  1853            .  M DIR("A" )=GMTEXT
  1854            .  S (DIR("? "),DIR("?? "))=""
  1855            .  S DIR("T" )=+$G(GMTI ME)
  1856            .  D TYPEAHE D(0)
  1857            .  W ! D ^DI R
  1858            .  D TYPEAHE D(1)
  1859            .  Q
  1860            Q
  1861            ;
  1862   TYPEAHED(G MBOOL) ;
  1863            ;  *** Enabl e/Disable  type-ahead
  1864            N  GMKRNL,GM USER
  1865            I  GMBOOL>0  D
  1866            .  S GMUSER= $TR($$GET1 ^DIQ(200,D UZ,200.09, "I"),"YN", "10")
  1867            .  S GMKRNL= $TR($$GET1 ^DIQ(8989. 3,1,209,"I "),"YN","1 0")
  1868            .  I $S(GMUS ER?1N:GMUS ER,1:GMKRN L)>0 X ^%Z OSF("TYPE- AHEAD")
  1869            .  Q
  1870            E   D
  1871            .  X ^%ZOSF( "NO-TYPE-A HEAD")
  1872            .  Q
  1873            Q
  1874            ;
  1875   COUNT(GMRO OT,GMPCNT, GMCCNT,GMN CNT) ;
  1876            ;  *** Count  patients  / consults  / notes
  1877            N  GMCONS,GM NAME,GMTIT L,GMUCON,G MUNAM,GMUT TL
  1878            S  GMUNAM=$N A(@GMROOT@ ("UNIQUE-N AME"))
  1879            S  GMUCON=$N A(@GMROOT@ ("UNIQUE-C ONS"))
  1880            S  GMUTTL=$N A(@GMROOT@ ("UNIQUE-T ITL"))
  1881            K  @GMUNAM,@ GMUCON,@GM UTTL
  1882            S  (GMPCNT,G MCCNT,GMNC NT)=0
  1883            S  GMNAME=""
  1884            F   S GMNAME =$O(@GMROO T@("DATA", GMNAME)) Q :GMNAME=""   D
  1885            .  I $D(@GMU NAM@(GMNAM E))#2'>0 S  GMPCNT=GM PCNT+1
  1886            .  S @GMUNAM @(GMNAME)= ""
  1887            .  S GMCONS= ""
  1888            .  F  S GMCO NS=$O(@GMR OOT@("DATA ",GMNAME,G MCONS)) Q: GMCONS=""   D
  1889            . . I $D(@GM UCON@(GMCO NS))#2'>0  S GMCCNT=G MCCNT+1
  1890            . . S @GMUCO N@(GMCONS) =""
  1891            . . S GMTITL =""
  1892            . . F  S GMT ITL=$O(@GM ROOT@("DAT A",GMNAME, GMCONS,GMT ITL)) Q:GM TITL=""  D
  1893            . .. I $D(@G MUTTL@(GMT ITL))#2'>0  S GMNCNT= GMNCNT+1
  1894            . .. S @GMUT TL@(GMTITL )=""
  1895            . .. Q
  1896            . . Q
  1897            .  Q
  1898            K  @GMUNAM,@ GMUCON,@GM UTTL
  1899            Q
  1900            ;
  1901   CLINLIST(G MROOT,GM0C FG) ;
  1902            ;  *** Get l ist of cli nics
  1903            N  GM0CLN,GM 0STP,GMIND X,GMLIST,G MSCRN
  1904            S  GM0CLN=0
  1905            F   S GM0CLN =$O(^GMR(1 23.033,GM0 CFG,"CLIN" ,"B",GM0CL N)) Q:GM0C LN'>0  D
  1906            .  S @GMROOT @("XREF-CL IN",GM0CLN )=""
  1907            .  Q
  1908            S  GM0STP=$$ GET1^DIQ(1 23.033,GM0 CFG,.06,"I ")
  1909            I  GM0STP>0  D
  1910            .  S GMLIST= $NA(^TMP(" DILIST",$J ))
  1911            .  K @GMLIST
  1912            .  S GMSCRN= "I $P(^(0) ,U,7)="_GM 0STP
  1913            .  D LIST^DI C(44,"","@ ","Q","*", "",GM0STP, "AST",GMSC RN)
  1914            .  D CLEAN^D ILF
  1915            .  S GMINDX= 0
  1916            .  F  S GMIN DX=$O(@GML IST@(2,GMI NDX)) Q:GM INDX'>0  D
  1917            . . S GM0CLN =$G(@GMLIS T@(2,GMIND X))
  1918            . . I GM0CLN >0 S @GMRO OT@("XREF- CLIN",GM0C LN)=""
  1919            . . Q
  1920            .  K @GMLIST
  1921            .  Q
  1922            Q
  1923            ;
  1924   CONSOKAY(G M0CON) ;
  1925            ;  *** Consu lt status  okay?
  1926            Q  $S("^c^dc ^x^"[(U_$$ GET1^DIQ(1 23,GM0CON, "8:.1")_U) :0,1:1)
  1927            ;
  1928   NOTESTAT(G MSTAT) ;
  1929            ;  *** Get l ist of not e statuses
  1930            N  GM0STA,GM INDX
  1931            K  GMSTAT
  1932            F  GMINDX="A MENDED","C OMPLETED"  D
  1933            .  S GM0STA= $$FIND1^DI C(8925.6," ","X",GMIN DX,"B")
  1934            .  I GM0STA> 0 S GMSTAT (GM0STA)=G M0STA_U_GM INDX
  1935            .  Q
  1936            Q
  1937            ;
  1938   ISTM(GM0CF G) ;
  1939            ;  *** Manua l patient  team assoc iated with  configura tion?
  1940            Q  ($$GET1^D IQ(123.033 ,GM0CFG,". 03:1","I") ="TM")
  1941            ;
  1942   GLOBROOT(G MFILE,GMTR AN) ;
  1943            ;  *** Get f ile's glob al root
  1944            N  GMROOT
  1945            S  GMROOT=$$ GET1^DID(G MFILE,""," ","GLOBAL  NAME")
  1946            Q  $S($D(GMT RAN)#2>0:$ TR(GMROOT, U,GMTRAN), 1:GMROOT)
  1947            ;
  1948   SEEN(GMSTA T) ;
  1949            ;  *** Pt wa s seen in  clinic?
  1950            Q  ("^I^NT^R ^"[(U_GMST AT_U))
  1951            ;
  1952   UNSEEN(GMS TAT) ;
  1953            ;  *** Pt wa s not seen  in clinic ?
  1954            Q  ("^CC^CCR ^CP^CPR^NS ^NSR^"[(U_ GMSTAT_U))
  1955   GMRCCX (Ne w)
  1956    GMRCCX ;S FVAMC/DAD  - Consult  Closure To ol: Config  File Util ities ;01/ 20/17 15:1 9
  1957            ; ;3.0;CONSU LT/REQUEST  TRACKING; **89**;DEC  27, 1997; Build 16
  1958            ; Consult Cl osure Tool         
  1959            ;  IA#   Usa ge      Co mponent
  1960            ;  --------- ---------- -------
  1961            ;  1058  Pri vate    MD EL^DDSUTL
  1962            ;  1058  Pri vate    ML OAD^DDSUTL
  1963            ;  2051  Sup ported  LI ST^DIC
  1964            ;  2052  Sup ported  $$ GET1^DID
  1965            ;  2053  Sup ported  UP DATE^DIE
  1966            ;  2054  Sup ported  CL EAN^DILF
  1967            ;
  1968   LOOKUP(GMX ,GM0,GMFIL E) ;
  1969            ;  *** Proce ss additio ns/deletio ns [-]XXX*
  1970            ;  Called fr om the pre -lookup tr ansform no des
  1971            ;  ^DD(123.0 331 -> 123 .0336,.01, 7.5)
  1972            N  GMFDA,GMI EN,GMLST,D 0,D1,DA,DI C,DIERR
  1973            N  DIHELP,DI MSG,DUOUT, DIRUT,DIRO UT,DO,DTOU T,X,Y
  1974            I  ($G(GMX)? 1.E1"*"),( $G(GM0)>0)  D
  1975            .  S GMLST=$ NA(^TMP("D ILIST",$J) )
  1976            .  S GMFDA=$ NA(^TMP("G MCTR-FDA", $J))
  1977            .  S GMIEN=$ NA(^TMP("G MCTR-IEN", $J))
  1978            .  K @GMLST, @GMFDA,@GM IEN
  1979            .  I $E(GMX) ="-" D
  1980            . . D DEL(.G MX,GM0,GMF ILE)
  1981            . . Q
  1982            .  E  D
  1983            . . D ADD(.G MX,GM0,GMF ILE)
  1984            . . Q
  1985            .  K @GMLST, @GMFDA,@GM IEN
  1986            .  Q
  1987            Q
  1988            ;
  1989   ADD(GMX,GM 0,GMFILE)  ;
  1990            ;  *** Proce ss additio ns XXX* (C opy/Mod of  LOOKE^XPD ET)
  1991            N  GMDATA,GM IENS,GMIND X,GMPOIN,G MSCRN
  1992            S  GMPOIN=$$ GET1^DID(G MFILE,.01, "","SPECIF IER")
  1993            S  GMPOIN=$T R(GMPOIN,$ TR(GMPOIN, "012345678 9."))
  1994            S  GMSCRN=$$ DICS(GMFIL E)
  1995            S  GMX=$P(GM X,"*",1)
  1996            D  LIST^DIC( GMPOIN,"", "","","*", "",GMX,"", GMSCRN)
  1997            I  $G(@GMLST @(0))>0 D
  1998            .  S GMINDX= 0
  1999            .  F  S GMIN DX=$O(@GML ST@(2,GMIN DX)) Q:GMI NDX'>0  D
  2000            . . S GMDATA =$G(@GMLST @(2,GMINDX ))
  2001            . . I GMDATA >0 D
  2002            . .. S GMIEN S="?+"_GMI NDX_","_GM 0_","
  2003            . .. S @GMFD A@(GMFILE, GMIENS,.01 )=GMDATA
  2004            . .. S @GMIE N@(GMINDX) =GMDATA
  2005            . .. Q
  2006            . . Q
  2007            .  I $D(@GMF DA) D
  2008            . . D UPDATE ^DIE("",GM FDA,GMIEN)
  2009            . . I '$D(DI ERR),$D(DD S),$D(@GMI EN) D MLOA D^DDSUTL(G MIEN)
  2010            . . D CLEAN^ DILF
  2011            . . Q
  2012            .  S GMX=""
  2013            .  Q
  2014            E   D
  2015            .  K GMX
  2016            .  Q
  2017            Q
  2018            ;
  2019   DEL(GMX,GM 0,GMFILE)  ;
  2020            ;  *** Proce ss deletio ns -XXX* ( Copy/Mod o f DEL^XPDE T)
  2021            N  GM1,GMIEN S,GMINDX
  2022            S  GMX=$P(GM X,"*",1),G MX=$E(GMX, 2,$L(GMX)- 1)
  2023            D  LIST^DIC( GMFILE,"," _GM0_","," ","","*"," ",GMX)
  2024            I  $G(@GMLST @(0))>0 D
  2025            .  S GMINDX= 0
  2026            .  F  S GMIN DX=$O(@GML ST@(2,GMIN DX)) Q:GMI NDX'>0  D
  2027            . . S GM1=$G (@GMLST@(2 ,GMINDX))
  2028            . . I GM1>0  D
  2029            . .. S GMIEN S=GM1_","_ GM0_","
  2030            . .. S @GMFD A@(GMFILE, GMIENS,.01 )="@"
  2031            . .. Q
  2032            . . Q
  2033            .  I $D(@GMF DA) D
  2034            . . D UPDATE ^DIE("",GM FDA)
  2035            . . I '$D(DI ERR),$D(DD S) D MDEL^ DDSUTL($NA (@GMLST@(2 )))
  2036            . . D CLEAN^ DILF
  2037            . . Q
  2038            .  S GMX=""
  2039            .  Q
  2040            E   D
  2041            .  K GMX
  2042            .  Q
  2043            Q
  2044            ;
  2045   DICS(GMFIL E) ;
  2046            ;  *** DIC(" S") data s creens
  2047            ;  Called fr om ADD^GMR CCX and
  2048            ;  ^DD(123.0 331 -> 123 .0336,.01, 0 & 12.1)
  2049            N  GMSCRN
  2050            ;  Disabled  consult se rvices are  not selec table
  2051            S  GMSCRN(12 3.0331)="I  $P(^(0),U ,2)'=9"
  2052            ;  Inactive  consult pr ocedures a re not sel ectable
  2053            S  GMSCRN(12 3.0332)="I  $P(^(0),U ,2)'>0"
  2054            ;  Only cons ult order  items are  selectable
  2055            S  GMSCRN(12 3.0333)="I  ($P(^(0), U,3)="""") &(^(0)?1"" GMRC""1(1" "R"",1""T" ").E)"
  2056            ;  Only acti ve clinica l procedur es are sel ectable
  2057            S  GMSCRN(12 3.0334)="I  $P(^(0),U ,9)=1"
  2058            ;  Only clin ics are se lectable
  2059            S  GMSCRN(12 3.0335)="I  $P(^(0),U ,3)=""C"""
  2060            ;  Only titl es are sel ectable
  2061            S  GMSCRN(12 3.0336)="I  $P(^(0),U ,4)=""DOC" ""
  2062            Q  $G(GMSCRN (+$G(GMFIL E)),"I 1")
  2063            ;
  2064   PATCH(GMOK AY) ;
  2065            ;  *** Check  the versi on and pat ch status  of GMRCT
  2066            N  GMROUT,GM VERS
  2067            S  GMOKAY=1
  2068            S  GMROUT="E N^GMRCT"
  2069            S  GMVERS="  ;;3.0;CONS ULT/REQUES T TRACKING ;**1,5,11, 18,46**;De c 27, 1997 ;Build 23"
  2070            I  $$EN($P(G MROUT,U,2) ,$P(GMVERS ,";;",2))= "NO-MATCH"  D
  2071            .  S GMOKAY= 0
  2072            .  W !
  2073            .  W !,"The  Consult Cl osure Tool  uses an u ndocumente d entry po int (",GMR OUT,") to"
  2074            .  W !,"dete rmine the  recipients  of consul t notifica tions.  Th is entry p oint may"
  2075            .  W !,"have  changed s ince the C onsult Clo sure Tool  was releas ed, see th e second"
  2076            .  W !,"line  of routin e ",$P(GMR OUT,U,2),"  below."
  2077            .  W !
  2078            .  W !,"Expe cted:",GMV ERS
  2079            .  W !,"Foun d:   ",$T( +2^@$P(GMR OUT,U,2))
  2080            .  W !
  2081            .  W !,"The  consult Cl osure Tool  will not  run until  the ",GMRO UT," entry  point is"
  2082            .  W !,"revi ewed and t he expecte d second l ine is upd ated in PA TCH^",$T(+ 0),"."
  2083            .  W !
  2084            .  Q
  2085            Q
  2086   PATCHES    ;/WDE/API  TO CHECK F OR THE SEC OND LINE M ATCH UP ;  [08/03/09  06:13am]
  2087            ; ;1.0;REGIO N1;**1**;0 8/03/2009; Build 12;
  2088            ;
  2089            ; The sole i ntent of t his API is  to valida te the sec ond line o f any rout ine that i s passed i n
  2090            ;
  2091            ; Parm 1 is  the routin e WITHOUT  THE ^
  2092            ; parm 2 is  the SECOND  LINE of t he routine  WITHOUT t he first t wo semi's
  2093            ;    See lin e tag EXAM PLE on how  to run it ..
  2094            ; returns EI THER MATCH  OR NO-MAT CH
  2095                     ;
  2096   EN(PATROUT INE,PATSTR ING)    ;
  2097            N  PATVALID, PATTEST,PA TX,ARMVALI D
  2098            S  PATVALID= "MATCH"
  2099            S  PATX="S P ATTEST=$T( +2^"_PATRO UTINE_")"  X PATX
  2100            S  PATTEST=$ P(PATTEST, ";;",2,99)
  2101            I  PATTEST'= PATSTRING  S PATVALID ="NO-MATCH "
  2102            Q  PATVALID
  2103   GMRCCY (Ne w)
  2104   GMRCCY ;SF VAMC/DAD -  Consult C losure Too l: Date Ra nge Select or ;01/20/ 17 15:19
  2105            ; ;3.0;CONSU LT/REQUEST  TRACKING; **89**;DEC  27, 1997; Build 16
  2106            ; Consult Cl osure Tool          ;
  2107            ;  IA#    Us age      C omponent
  2108            ;  --------- ---------- --------
  2109            ;  10003  Su pported  ^ %DT
  2110            ;  10103  Su pported  $ $FMTE^XLFD T
  2111            ;  10103  Su pported  $ $SCH^XLFDT
  2112            ;  10104  Su pported  $ $UP^XLFSTR
  2113            ;
  2114   EN(GMTBEG, GMTEND,GMH EAD,GMRANG ) ; *** En try Point
  2115            ;  Input
  2116            ;   GMTBEG =  Begin dat e - Defaul t (FM Int)  [Req, Pas s by ref]
  2117            ;   GMTEND =  End   dat e - Defaul t (FM Int)  [Req, Pas s by ref]
  2118            ;   GMHEAD =  Header li ne [Opt, P ass by val ue]
  2119            ;   GMRANG =  Date rang e type [Op t, Pass by  value]
  2120            ;               M,M!,Q, Q!,S,S!,Y, Y!,F,F!,U, U!  ("!" f orces sele ction)
  2121            ;  Output
  2122            ;   $$EN()    = 1 - Oka y   OR   0  - Exit
  2123            ;   GMTBEG =  Begin dat e [If $$EN ()=1 FM In t Date, El se ""]
  2124            ;   GMTEND =  End   dat e [If $$EN ()=1 FM In t Date, El se ""]
  2125            ;
  2126            ;  Example
  2127            ;   IF $$EN^ GMDATE(.GM TBEG,.GMTE ND,GMHEAD, GMRANG)'>0  QUIT
  2128            ;
  2129            N  GM,GMDATA ,GMDFLT,GM DONE,GMFRA M,GMQUIT,G MWHEN,X,Y
  2130            S  (GMFRAM,G MFRAM(0))= ""
  2131            F  GM=1:1 S  GMDATA=$P( $T(FRAMDAT +GM),";;", 2) Q:GMDAT A=U  D
  2132            .  S GMFRAM= GMFRAM_U_$ $UP^XLFSTR (GMDATA)
  2133            .  S GMFRAM( 0)=GMFRAM( 0)_GMDATA_ $S(GM<6:",   ",1:"")
  2134            .  Q
  2135            F   D  Q:GMQ UIT!GMDONE
  2136            .  S (GMQUIT ,GMDONE)=0
  2137            .  S GMTBEG= $S($G(GMTB EG)\1?7N:G MTBEG\1,1: "")
  2138            .  S GMTEND= $S($G(GMTE ND)\1?7N:G MTEND\1,1: "")
  2139            .  S GMDFLT= $$UP^XLFST R($G(GMRAN G))_U_GMTB EG_U_GMTEN D
  2140            .  I $G(GMHE AD)]"" W ! ,GMHEAD
  2141            .  W !,GMFRA M(0)
  2142            .  W !,"Sele ct date ra nge: "
  2143            .  W $S($TR( $P(GMDFLT, U),"!")]"" :$TR($P(GM DFLT,U),"! ")_"// ",1 :"")
  2144            .  S GMWHEN= ""
  2145            .  I $P(GMDF LT,U)'["!"  R GMWHEN: DTIME S:'$ T GMWHEN=U
  2146            .  I GMWHEN= "" S GMWHE N=$TR($P(G MDFLT,U)," !") W GMWH EN
  2147            .  I (GMWHEN ="")!($E(G MWHEN)=U)  S GMQUIT=1  Q
  2148            .  S GMWHEN= $$UP^XLFST R(GMWHEN)
  2149            .  I $F(GMFR AM,U_GMWHE N)'>0 D  Q
  2150            . . D BELL(G MWHEN)
  2151            . . I $P(GMD FLT,U)["!"  S GMQUIT= 1 Q
  2152            . . W !!?5," Enter the  first few  letters of  "
  2153            . . W "one o f the choi ces listed  below.",!
  2154            . . Q
  2155            .  W $P($P(G MFRAM,U_GM WHEN,2),U)
  2156            .  S GMWHEN= $E(GMWHEN)
  2157            .  S GMQUIT= $$ASKDATE( GMWHEN,GMD FLT,.GMTBE G,.GMTEND)
  2158            .  I GMQUIT  D
  2159            . . S GMQUIT =$S($P(GMD FLT,U)'["! ":0,1:GMQU IT)
  2160            . . I GMQUIT '>0 W !
  2161            . . Q
  2162            .  E  D
  2163            . . S GMDONE =1
  2164            . . Q
  2165            .  Q
  2166            S  GMQUIT='$ G(GMQUIT)
  2167            I  GMQUIT>0  D
  2168            .  W !!,"Ran ge selecte d: "
  2169            .  W $$FMTE^ XLFDT(GMTB EG,"5Z"),"  to ",$$FM TE^XLFDT(G MTEND,"5Z" )
  2170            .  Q
  2171            E   D
  2172            .  S (GMTBEG ,GMTEND)=" "
  2173            .  Q
  2174            Q  GMQUIT
  2175            ;
  2176   FRAMDAT  ; ; TimeFram eName
  2177            ; ;Monthly
  2178            ; ;Quarterly
  2179            ; ;Semi-Annu ally
  2180            ; ;Yearly
  2181            ; ;Fiscal Ye arly
  2182            ; ;User Sele ctable
  2183            ; ;^
  2184            ;
  2185   ASKDATE(GM WHEN,GMDFL T,GMTBEG,G MTEND) ; * ** Prompt  for date r ange
  2186            N  GMQUIT
  2187            S  GMQUIT=1
  2188            I  GMWHEN="M " D
  2189            .  S GMQUIT= $$MONTH(GM WHEN,GMDFL T,.GMTBEG, .GMTEND)
  2190            .  Q
  2191            I  (GMWHEN=" Q")!(GMWHE N="S") D
  2192            .  S GMQUIT= $$QUART(GM WHEN,GMDFL T,.GMTBEG, .GMTEND)
  2193            .  Q
  2194            I  (GMWHEN=" F")!(GMWHE N="Y") D
  2195            .  S GMQUIT= $$YEAR(GMW HEN,GMDFLT ,.GMTBEG,. GMTEND)
  2196            .  Q
  2197            I  GMWHEN="U " D
  2198            .  S GMQUIT= $$USERSEL( GMWHEN,GMD FLT,.GMTBE G,.GMTEND)
  2199            .  Q
  2200            Q  GMQUIT
  2201            ;
  2202   MONTH(GMWH EN,GMDFLT, GMTBEG,GMT END) ; ***  Monthly
  2203            N  %DT,GM,GM DATA,GMDON E,GMEND,GM EOM,GMMNYR ,GMMOE,GMQ UIT,GMYEAR ,X,Y
  2204            F  GM=1:1 S  GMDATA=$P( $T(MONTHDA T+GM),";;" ,2) Q:GMDA TA=U  D
  2205            .  S GMEOM($ P(GMDATA,U ))=$P(GMDA TA,U,2,3)
  2206            .  Q
  2207            S  (GMQUIT,G MDONE)=0
  2208            F   D  Q:(GM QUIT>0)!(G MDONE>0)
  2209            .  K %DT
  2210            .  S %DT="AE "
  2211            .  S %DT("A" )="Enter M onth and Y ear: "
  2212            .  I $P(GMDF LT,U,2)]""  D
  2213            . . S GMMNYR =$P(GMDFLT ,U,2)
  2214            . . S %DT("B ")=$E(GMMN YR,4,5)_"/ "_(1700+$E (GMMNYR,1, 3))
  2215            . . Q
  2216            .  W ! D ^%D T S GMEND= +$G(Y)
  2217            .  I GMEND'> 0 S GMQUIT =1 Q
  2218            .  I ('+$E(G MEND,4,5)) !(+$E(GMEN D,6,7)) D   Q
  2219            . . D BELL(" ")
  2220            . . W !!,"Pl ease enter  a month a nd year"
  2221            . . W $S(+$E (GMEND,6,7 ):" only", 1:"")
  2222            . . Q
  2223            .  S GMMOE=$ E(GMEND,4, 5)
  2224            .  S GMTEND= $E(GMEND,1 ,5)_$P(GME OM(GMMOE), U)
  2225            .  I $E(GMTE ND,4,5)="0 2" D
  2226            . . S GMYEAR =1700+$E(G MTEND,1,3)
  2227            . . S GMTEND =GMTEND+(( GMYEAR#4=0 )&((GMYEAR #100)!(GMY EAR#400=0) ))
  2228            . . Q
  2229            .  S GMTBEG= $E(GMTEND, 1,5)_"01"
  2230            .  S GMDONE= 1
  2231            .  Q
  2232            Q  GMQUIT
  2233            ;
  2234   MONTHDAT ; ; MonthNum ber ^ Days InMonth ^  MonthName
  2235            ; ;01^31^JAN UARY
  2236            ; ;02^28^FEB RUARY
  2237            ; ;03^31^MAR CH
  2238            ; ;04^30^APR IL
  2239            ; ;05^31^MAY
  2240            ; ;06^30^JUN E
  2241            ; ;07^31^JUL Y
  2242            ; ;08^31^AUG UST
  2243            ; ;09^30^SEP TEMBER
  2244            ; ;10^31^OCT OBER
  2245            ; ;11^30^NOV EMBER
  2246            ; ;12^31^DEC EMBER
  2247            ; ;^
  2248            ;
  2249   QUART(GMWH EN,GMDFLT, GMTBEG,GMT END) ; ***  Quarterly  & Semi-An nually
  2250            N  %DT,GM,GM DATA,GMDON E,GMMNDY,G MQU,GMQUIT ,GMQUYR,GM SBEG,GMSEM I,GMYR,GMQ ART
  2251            N  GMQBEG,GM QEND,GMQQU A,X,Y
  2252            S  GMSEMI=$S (GMWHEN="S ":1,1:0)
  2253            F  GM=1:1 S  GMDATA=$P( $T(QUARTDA T+GM),";;" ,2) Q:GMDA TA=U  D
  2254            .  S GMQQUA( GM)=$P(GMD ATA,U)
  2255            .  S GMQBEG( GM)="000"_ $P(GMDATA, U,2)
  2256            .  S GMSBEG( GM)="000"_ $P(GMDATA, U,3)
  2257            .  S GMQEND( GM)="000"_ $P(GMDATA, U,4)
  2258            .  Q
  2259            S  GMQUYR=""
  2260            I  $P(GMDFLT ,U,2)]"" D
  2261            .  S GMMNDY= $E($P(GMDF LT,U,2),4, 7)
  2262            .  I (GMMNDY '<GMQBEG(1 ))&(GMMNDY '>GMQEND(1 )) S GMQU= 1
  2263            .  I (GMMNDY '<GMQBEG(2 ))&(GMMNDY '>GMQEND(2 )) S GMQU= 2
  2264            .  I (GMMNDY '<GMQBEG(3 ))&(GMMNDY '>GMQEND(3 )) S GMQU= 3
  2265            .  I (GMMNDY '<GMQBEG(4 ))&(GMMNDY '>GMQEND(4 )) S GMQU= 4
  2266            .  S GMQUYR= $S(GMQU>0: GMQU_"/"_( 1700+$E($P (GMDFLT,U, 2),1,3)+(G MQU=1)),1: "")
  2267            .  Q
  2268            S  (GMQUIT,G MDONE)=0
  2269            F   D  Q:(GM QUIT>0)!(G MDONE>0)
  2270            .  I GMSEMI> 0 D
  2271            . . W !!,"En ter Quarte r Period a nd FY you  "
  2272            . . W "wish  Semi-Annua l range to  end with"
  2273            . . Q
  2274            .  W !
  2275            .  W !,"Ente r Quarter  and Year:  ",$S(GMQUY R]"":GMQUY R_"// ",1: "")
  2276            .  R GMQART: DTIME S:'$ T GMQART=U
  2277            .  I GMQART= "" S GMQAR T=GMQUYR
  2278            .  I (GMQART =U)!(GMQAR T="") S GM QUIT=1 Q
  2279            .  I (GMQART '?1N1P2N)& (GMQART'?1 N1P4N) D   Q
  2280            . . D BELL(G MQART)
  2281            . . W !!,"En ter Quarte r Period i n this for mat: "
  2282            . . W "2nd q uarter 198 8 would be  2-88, 2/8 8, 2 88"
  2283            . . Q
  2284            .  I ($E(GMQ ART)>4)!($ E(GMQART)< 1) D  Q
  2285            . . D BELL(" ")
  2286            . . W !!,"En ter Quarte r 1 to 4 o nly"
  2287            . . Q
  2288            .  S GMQU=$E (GMQART)
  2289            .  S GMYR=$E (GMQART,3, 6)
  2290            .  K %DT S X =GMYR D ^% DT S GMYR= $E(Y,1,3)
  2291            .  F GM=1:1: 4 D
  2292            . . S GMQBEG (GM)=$S(GM =1:GMYR-1, 1:GMYR)_$E (GMQBEG(GM ),4,7)
  2293            . . S GMSBEG (GM)=$S(GM '>2:GMYR-1 ,1:GMYR)_$ E(GMSBEG(G M),4,7)
  2294            . . S GMQEND (GM)=$S(GM =1:GMYR-1, 1:GMYR)_$E (GMQEND(GM ),4,7)
  2295            . . Q
  2296            .  S GMTEND= GMQEND(GMQ U)
  2297            .  S GMTBEG= $S(GMSEMI: GMSBEG(GMQ U),1:GMQBE G(GMQU))
  2298            .  S GMDONE= 1
  2299            .  Q
  2300            Q  GMQUIT
  2301            ;
  2302   QUARTDAT ; ;Name ^ Qu arterStart  ^ SemiSta rt ^ Quart erEnd
  2303            ; ;FIRST^100 1^0701^123 1
  2304            ; ;SECOND^01 01^1001^03 31
  2305            ; ;THIRD^040 1^0101^063 0
  2306            ; ;FOURTH^07 01^0401^09 30
  2307            ; ;^
  2308            ;
  2309   YEAR(GMWHE N,GMDFLT,G MTBEG,GMTE ND) ; ***  Yearly & F iscal Year ly
  2310            N  %DT,GMDON E,GMFY,GMQ UIT,GMYEAR ,GMYR,X,Y
  2311            S  GMFY=$S(G MWHEN="F": 1,1:0)
  2312            S  (GMQUIT,G MDONE)=0
  2313            F   D  Q:(GM QUIT>0)!(G MDONE>0)
  2314            .  W !!,"Ent er ",$S(GM FY:"FISCAL  ",1:"")," YEAR: "
  2315            .  S GMYEAR= $S($P(GMDF LT,U,2)]"" :1700+$E($ P(GMDFLT,U ,2),1,3),1 :"")
  2316            .  W $S(GMYE AR]"":GMYE AR_"// ",1 :"")
  2317            .  R GMYR:DT IME S:'$T  GMYR=U
  2318            .  I GMYR=""  S GMYR=GM YEAR
  2319            .  I (GMYR=U )!(GMYR="" ) S GMQUIT =1 Q
  2320            .  I (GMYR'? 2N)&(GMYR' ?4N) D  Q
  2321            . . D BELL(G MYR)
  2322            . . W !!,"En ter a 2 or  4 digit " ,$S(GMFY:" fiscal ",1 :""),"year "
  2323            . . Q
  2324            .  K %DT S X =GMYR D ^% DT S GMYR= $E(Y,1,3)
  2325            .  I GMFY D
  2326            . . S GMTBEG =GMYR-1_"1 001"
  2327            . . S GMTEND =GMYR_"093 0"
  2328            . . Q
  2329            .  E  D
  2330            . . S GMTBEG =GMYR_"010 1"
  2331            . . S GMTEND =GMYR_"123 1"
  2332            . . Q
  2333            .  S GMDONE= 1
  2334            .  Q
  2335            Q  GMQUIT
  2336            ;
  2337   USERSEL(GM WHEN,GMDFL T,GMTBEG,G MTEND) ; * ** User Se lectable
  2338            N  %DT,GMBEG ,GMEND,GMQ UIT,X,Y
  2339            S  GMQUIT=0
  2340            W  !!,"Enter  beginning  and endin g dates fo r the desi red time p eriod:",!
  2341            K  %DT
  2342            S  %DT="AEX"
  2343            S  %DT("A")= "Beginning  Date: "
  2344            I  $P(GMDFLT ,U,2)]"" S  %DT("B")= $$FMTE^XLF DT($P(GMDF LT,U,2),"5 Z")
  2345            D  ^%DT S GM BEG=+$G(Y)
  2346            I  GMBEG>0 D
  2347            .  K %DT
  2348            .  S %DT="AE X"
  2349            .  S %DT(0)= GMBEG
  2350            .  S %DT("A" )="Ending  Date:    "
  2351            .  I $P(GMDF LT,U,3)]"" ,$P(GMDFLT ,U,3)'<GMB EG D
  2352            . . S %DT("B ")=$$FMTE^ XLFDT($P(G MDFLT,U,3) ,"5Z")
  2353            . . Q
  2354            .  E  D
  2355            . . S %DT("B ")=$$FMTE^ XLFDT(GMBE G,"5Z")
  2356            . . Q
  2357            .  D ^%DT S  GMEND=+$G( Y)
  2358            .  I GMEND>0  D
  2359            . . S GMTBEG =GMBEG
  2360            . . S GMTEND =GMEND
  2361            . . Q
  2362            .  E  D
  2363            . . S GMQUIT =1
  2364            . . Q
  2365            .  Q
  2366            E   D
  2367            .  S GMQUIT= 1
  2368            .  Q
  2369            Q  GMQUIT
  2370            ;
  2371   BELL(X)  ;  *** Write  ?? <Beep>
  2372            I  $E(X)'="? " W " ??", $C(7)
  2373            Q
  2374            ;
  2375   LASTMNTH(G MDATE,GMTB EG,GMTEND)  ; *** Com pute last  month date  range
  2376            N  GMMN,GMYR
  2377            S  GMYR=1700 +$E(GMDATE ,1,3)
  2378            S  GMMN=$E(G MDATE,4,5)
  2379            I  (GMMN'<1) &(GMMN'>12 ) D
  2380            .  S GMMN=GM MN-1
  2381            .  I GMMN=0  S GMMN=12, GMYR=GMYR- 1
  2382            .  I $L(GMMN )=1 S GMMN ="0"_GMMN
  2383            .  S GMTBEG= (GMYR-1700 )_GMMN_"01 "
  2384            .  S GMTEND= $$SCH^XLFD T("1M(1)", GMTBEG)\1
  2385            .  Q
  2386            E   D
  2387            .  S (GMTBEG ,GMTEND)=" "
  2388            .  Q
  2389            Q
  2390   GMRCZUTL ( New)
  2391   GMRCUTL1 ; SLC/DCM,JF R,MA - Gen eral Utili ties ;01/2 0/2017  15 :23
  2392                     ;;3 .0;CONSULT /REQUEST T RACKING;** 1,4,12,15, 21,17,28,8 9**;DEC 27 , 1997;Bui ld 16
  2393                     ;Ad ded call t o GMRCZUTL  for secon dary print er                  
  2394                     ; T his routin e invokes  IA #2876,3 121
  2395                     ; P atch #21 a dded varia ble GMRCAU DT and mov ed line ta g PRNTAUDT
  2396                     ; t o GMRCP5A.
  2397                     ;
  2398   PRNT(SRVCI FN,GMRCO)  ;print for m 513 to a  printer w hen new co nsult is e ntered
  2399                     ;;L OCAL MOD R MS/HINES 1 1-2-05 TO  PRINT A SE COND COPY
  2400                     N O RVP,GMRCDE V,GMRCQUED ,IOP,%ZIS, POP,ZTDTH, ZTDESC,ZTI O,ZTRTN,ZT SK,GMRCA
  2401   UDT
  2402                     I ' $G(SRVCIFN ) S SRVCIF N=+$P(^GMR (123,GMRCO ,0),U,5)
  2403                     Q:' $D(^GMR(12 3.5,SRVCIF N,578001))   Q:'$P(^G MR(123.5,S RVCIFN,578 001),"^")
  2404                     S I OP="`"_$P( ^GMR(123.5 ,SRVCIFN,5 78001),"^" )
  2405                     S % ZIS="N" D  ^%ZIS I PO P S %ZIS=0  D HOME^%Z IS Q
  2406                     S G MRCDEV=ION ,GMRCQUED= 1,GMRCAUDT =1
  2407                     S Z TRTN="PRNT ^GMRCP5A(" _(+GMRCO)_ ","_(+$G(T IUFLG))_", 1,"""_$G(G MRCCPY,"W" )_""",0,"_ (GMRCAUDT) _")"
  2408                     S Z TDESC="PRI NT SECOND  COPY OF CO NSULT FORM  513 FOR N EW CONSULT
  2409   "
  2410                     S Z TIO=GMRCDE V,ZTDTH=$H
  2411                     D ^ %ZTLOAD
  2412                     S % ZIS=0 D HO ME^%ZIS
  2413                     K G MRCQUED,GM RCDEV1
  2414                     Q