| 1 | SCCVU2 ;ALB/RMO,TMP - SCHED VISITS CONVERT/ARCHIVE UTILITIES; [ 10/10/95  2:39 PM ] | 
|---|
| 2 | ;;5.3;Scheduling;**211**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | VERDT(SCSTDT,SCENDT,SCLOG,SCERRMSG) ;Verify date range is valid | 
|---|
| 5 | ; Input  -- SCSTDT   Start date | 
|---|
| 6 | ;           SCENDT   End date | 
|---|
| 7 | ;           SCLOG    CST log IEN  [optional] | 
|---|
| 8 | ; Output -- #=Error number and 0=No Error | 
|---|
| 9 | ;           SCERRMSG Error message | 
|---|
| 10 | N SCERRNB,SCNVPAR | 
|---|
| 11 | S SCERRNB=0 | 
|---|
| 12 | S SCNVPAR=$G(^SD(404.91,1,"CNV")) | 
|---|
| 13 | ; | 
|---|
| 14 | ;Check start date | 
|---|
| 15 | I SCSTDT D | 
|---|
| 16 | . I SCSTDT<+SCNVPAR D  ;start dt cannot be before earliest encounter dt | 
|---|
| 17 | . . N SCERRIP,Y | 
|---|
| 18 | . . S SCERRNB=4049001.001 | 
|---|
| 19 | . . S Y=+SCNVPAR D D^DIQ S SCERRIP(1)=Y | 
|---|
| 20 | . . D GETERR^SCCVLOG1(SCERRNB,"",.SCERRIP,$G(SCLOG),1,.SCERRMSG) | 
|---|
| 21 | ; | 
|---|
| 22 | ;Check end date | 
|---|
| 23 | I 'SCERRNB,SCENDT D | 
|---|
| 24 | . I SCENDT<+SCNVPAR D  ;end dt cannot be before earliest encounter dt | 
|---|
| 25 | . . N SCERRIP,Y | 
|---|
| 26 | . . S SCERRNB=4049001.004 | 
|---|
| 27 | . . S Y=+SCNVPAR D D^DIQ S SCERRIP(1)=Y | 
|---|
| 28 | . . D GETERR^SCCVLOG1(SCERRNB,"",.SCERRIP,$G(SCLOG),1,.SCERRMSG) | 
|---|
| 29 | ; | 
|---|
| 30 | ;Check date range | 
|---|
| 31 | I 'SCERRNB,SCSTDT,SCENDT D | 
|---|
| 32 | . I SCSTDT>SCENDT D  ;start date cannot be after end date | 
|---|
| 33 | . . S SCERRNB=4049001.005 | 
|---|
| 34 | . . D GETERR^SCCVLOG1(SCERRNB,"","",$G(SCLOG),1,.SCERRMSG) | 
|---|
| 35 | . I 'SCERRNB,SCENDT<SCSTDT D  ;end date cannot be before start date | 
|---|
| 36 | . . S SCERRNB=4049001.006 | 
|---|
| 37 | . . D GETERR^SCCVLOG1(SCERRNB,"","",$G(SCLOG),1,.SCERRMSG) | 
|---|
| 38 | ; | 
|---|
| 39 | ;Check for 1 year limit if parameter set | 
|---|
| 40 | I 'SCERRNB,$P(SCNVPAR,U,5),$$FMADD^XLFDT(SCSTDT,365)<SCENDT D | 
|---|
| 41 | . S SCERRNB=4049001.007 | 
|---|
| 42 | . D GETERR^SCCVLOG1(SCERRNB,"","",$G(SCLOG),1,.SCERRMSG) | 
|---|
| 43 | Q SCERRNB | 
|---|
| 44 | ; | 
|---|
| 45 | CHKDUP(SCCVTYP,SCSTDT,SCENDT,SCLOG,SCERRMSG) ;Check for duplicate type and date range for conversion entry | 
|---|
| 46 | ; Input  -- SCCVTYP  Conversion type | 
|---|
| 47 | ;           SCSTDT   Start date | 
|---|
| 48 | ;           SCENDT   End date | 
|---|
| 49 | ;           SCLOG    CST log IEN | 
|---|
| 50 | ; Output -- #=Error number and 0=No Error | 
|---|
| 51 | ;           SCERRMSG Error message | 
|---|
| 52 | N SCERRNB,SCLOGX,SCCV0,SCDTS,SCDTE | 
|---|
| 53 | S (SCERRNB,SCLOGX)=0 | 
|---|
| 54 | F  S SCLOGX=$O(^SD(404.98,"TYP",SCCVTYP,SCLOGX)) Q:'SCLOGX!(SCERRNB)  I SCLOG'=SCLOGX D | 
|---|
| 55 | . S SCCV0=$G(^SD(404.98,SCLOGX,0)),SCDTS=$P(SCCV0,U,3),SCDTE=$P(SCCV0,U,4) | 
|---|
| 56 | . Q:$P(SCCV0,U,9)  ;Template canceled | 
|---|
| 57 | . ; | 
|---|
| 58 | . ; -- 'IF SCDTE<SCSTDT!(SCDTS>SCENDT) Q' | 
|---|
| 59 | . ;    If (end < new start) or (start > new end) then ok and quit | 
|---|
| 60 | . ;    Next line is boolean negative of above 'If' | 
|---|
| 61 | . ; | 
|---|
| 62 | . I SCDTE'<SCSTDT,SCDTS'>SCENDT D  ;date range overlap | 
|---|
| 63 | . . N SCERRIP | 
|---|
| 64 | . . S SCERRNB=4049001.01 | 
|---|
| 65 | . . S SCERRIP(1)=SCLOGX | 
|---|
| 66 | . . D GETERR^SCCVLOG1(SCERRNB,"",.SCERRIP,$G(SCLOG),1,.SCERRMSG) | 
|---|
| 67 | ; | 
|---|
| 68 | Q SCERRNB | 
|---|
| 69 | ; | 
|---|
| 70 | PROCSEL(SCRESULT,SC) ; -- Process Archive SELECT request - not used | 
|---|
| 71 | ; Input  -- SC       Array: | 
|---|
| 72 | ;                    SC("TEMPLNO")    Template number ien | 
|---|
| 73 | ;                      ("REQNUM")     Request number ien | 
|---|
| 74 | ; Output -- SCRESULT (#=Error number | 0=No Error)^Message | 
|---|
| 75 | ; | 
|---|
| 76 | Q | 
|---|
| 77 | N SCERRMSG,SCERRNB,SCLOG,SCREQ,SCREQACT | 
|---|
| 78 | S SCERRNB=0 | 
|---|
| 79 | ; | 
|---|
| 80 | S SCLOG=$G(SC("TEMPLNO")) | 
|---|
| 81 | S SCREQ=$G(SC("REQNUM")) | 
|---|
| 82 | ; | 
|---|
| 83 | ;Quit if Template number ien or request ien are not defined | 
|---|
| 84 | I 'SCLOG!('SCREQ) D | 
|---|
| 85 | . S SCERRNB=4049007.003 | 
|---|
| 86 | . D GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG) | 
|---|
| 87 | ; | 
|---|
| 88 | S SCRESULT=$S('SCERRNB:0,1:SCERRNB_U_$$BLDSTR^SCCVU1(.SCERRMSG)) | 
|---|
| 89 | ; | 
|---|
| 90 | G:SCERRNB PROCSELQ | 
|---|
| 91 | ; | 
|---|
| 92 | ; Set request action | 
|---|
| 93 | S SCREQACT=$P($G(^SD(404.99,SCLOG,"R",SCREQ,0)),U,2) | 
|---|
| 94 | ; | 
|---|
| 95 | ; Queue archive select request | 
|---|
| 96 | ;D QSEL^SCCVAST1(SCLOG,SCREQ) | 
|---|
| 97 | ; | 
|---|
| 98 | PROCSELQ Q | 
|---|
| 99 | ; | 
|---|
| 100 | OTHERR(ERRNO) ; Returns text of specific errors for error log | 
|---|
| 101 | N X | 
|---|
| 102 | S ERRNO=ERRNO+1 | 
|---|
| 103 | S X=$P($T(ERRLIST+ERRNO),";;",3,99) | 
|---|
| 104 | Q X | 
|---|
| 105 | ; | 
|---|
| 106 | ERRLIST ; List of 'OTHER' specific errors  ;;ERROR # (OFFSET-1);;ERROR TEXT | 
|---|
| 107 | ;;0;;Unknown | 
|---|
| 108 | ;;1;;Appointment does not exist in clinic file | 
|---|
| 109 | ;;2;;Encounter was not created for appointment | 
|---|
| 110 | ;;3;;Visit was not created for appointment | 
|---|
| 111 | ;;4;;Add/edit's top level 0-node does not exist | 
|---|
| 112 | ;;5;;Add/edit does not have a valid patient DFN | 
|---|
| 113 | ;;6;;Add/edit does not have a valid division | 
|---|
| 114 | ;;7;;Add/edit does not have a valid clinic stop | 
|---|
| 115 | ;;8;;Disposition does not have a valid hospital location | 
|---|
| 116 | ;;9;;Add/edit's "CS" level 0-node does not exist | 
|---|
| 117 | ; | 
|---|