| [613] | 1 | VAQUTL99 ;ALB/JFP,JRP - Various Function Calls;03FEB93
 | 
|---|
 | 2 |  ;;1.5;PATIENT DATA EXCHANGE;**2,10,29**;NOV 17, 1993
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | FUNCT ; *************** Function Calls *************** 
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | DASHSSN(SSN) ; -- Returns dash version of SSN
 | 
|---|
 | 7 |  ;              INPUT  : SSN - SSN without dashes
 | 
|---|
 | 8 |  ;              OUTPUT : N   - SSN with dashes
 | 
|---|
 | 9 |  Q:($G(SSN)="") ""
 | 
|---|
 | 10 |  Q:($E(SSN,10)'="P") $E(SSN,1,3)_"-"_$E(SSN,4,5)_"-"_$E(SSN,6,9)
 | 
|---|
 | 11 |  Q $E(SSN,1,3)_"-"_$E(SSN,4,5)_"-"_$E(SSN,6,10)
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 | AGE(DOB) ; -- Returns age based on date of birth
 | 
|---|
 | 14 |  ;              INPUT  : X1 = DOB - INTERNAL FORMAT
 | 
|---|
 | 15 |  ;                       X2       - TODAYS DATE
 | 
|---|
 | 16 |  ;              OUTPUT : AGE IN YEARS
 | 
|---|
 | 17 |  N X,X1,X2
 | 
|---|
 | 18 |  Q:($G(DOB)="") ""
 | 
|---|
 | 19 |  S X1=DT,X2=DOB
 | 
|---|
 | 20 |  D ^%DTC
 | 
|---|
 | 21 |  Q X\365.25
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 | DOBFMT(IDTE,STYLE) ; -- Returns formatted date
 | 
|---|
 | 24 |  ;              INPUT  : IDTE- INTERNAL FILEMAN DATE
 | 
|---|
 | 25 |  ;                       STYLE - FLAG INDICATING OUTPUT STYLE
 | 
|---|
 | 26 |  ;                         IF 0, OUTPUT IN MM-DD-YYYY FORMAT (DEFAULT)
 | 
|---|
 | 27 |  ;                         IF 1, OUTPUT IN MMM DD, YYYY FORMAT
 | 
|---|
 | 28 |  ;                           (MMM -> FIRST 3 CHARACTERS OF MONTH NAME)
 | 
|---|
 | 29 |  ;              OUTPUT : EXTERNAL DATE IN SPECIFIED FORMAT
 | 
|---|
 | 30 |  S STYLE=+$G(STYLE)
 | 
|---|
 | 31 |  Q:($G(IDTE)="") ""
 | 
|---|
 | 32 |  ;MM-DD-YYYY
 | 
|---|
 | 33 |  Q:('STYLE) $E(IDTE,4,5)_"-"_$E(IDTE,6,7)_"-"_($E(IDTE,1,3)+1700)
 | 
|---|
 | 34 |  ;MMM DD, YYYY
 | 
|---|
 | 35 |  N Y,%DT
 | 
|---|
 | 36 |  S Y=$P(IDTE,".",1)
 | 
|---|
 | 37 |  D DD^%DT
 | 
|---|
 | 38 |  Q Y
 | 
|---|
 | 39 |  ;
 | 
|---|
 | 40 | DATE(EDTE)      ; -- Converts external date to internal date format
 | 
|---|
 | 41 |  ;               INPUT : EXTERNAL DATE (TIME IS OPTIONAL)
 | 
|---|
 | 42 |  ;               OUTOUT: INTERNAL DATE, STORAGE FORMAT YYYMMMDD
 | 
|---|
 | 43 |  ;                        (TIME WILL BE RETURNED IF INCLUDED WITH INPUT)
 | 
|---|
 | 44 |  ;
 | 
|---|
 | 45 |  Q:'$D(EDTE) -1
 | 
|---|
 | 46 |  N X,%DT,Y
 | 
|---|
 | 47 |  S X=EDTE
 | 
|---|
 | 48 |  S %DT="TS"
 | 
|---|
 | 49 |  D ^%DT
 | 
|---|
 | 50 |  Q Y
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 | NOW(FMFORM,NOTIME) ;RETURNS CURRENT DATE & TIME
 | 
|---|
 | 53 |  ;INPUT  : FMFORM - Flag indicating if FileMan format should be used
 | 
|---|
 | 54 |  ;                  If 0, return in the format MM-DD-YYYY@HH:MM:SS
 | 
|---|
 | 55 |  ;                    (default)
 | 
|---|
 | 56 |  ;                  If 1, return in FileMan format
 | 
|---|
 | 57 |  ;         NOTIME - Flag indicating if time should not be included
 | 
|---|
 | 58 |  ;                  If 0, time will be included in output (default)
 | 
|---|
 | 59 |  ;                  If 1, time will not be included in output
 | 
|---|
 | 60 |  ;OUTPUT : Current date & time in specified format
 | 
|---|
 | 61 |  ;
 | 
|---|
 | 62 |  ;CHECK INPUT
 | 
|---|
 | 63 |  S FMFORM=+$G(FMFORM)
 | 
|---|
 | 64 |  S NOTIME=+$G(NOTIME)
 | 
|---|
 | 65 |  ;DECLARE VARIABLES
 | 
|---|
 | 66 |  N X,%,%H,%I,OUT
 | 
|---|
 | 67 |  S OUT="-1^Error occurred while determining current date and time"
 | 
|---|
 | 68 |  ;GET CURRENT DATE/TIME
 | 
|---|
 | 69 |  D NOW^%DTC
 | 
|---|
 | 70 |  ;FILEMAN FORMAT
 | 
|---|
 | 71 |  I (FMFORM) S OUT=$S(NOTIME:X,1:%)
 | 
|---|
 | 72 |  ;EXTERNAL FORMAT
 | 
|---|
 | 73 |  I ('FMFORM) D
 | 
|---|
 | 74 |  .S %=%_"000000"
 | 
|---|
 | 75 |  .S X=$E(%,4,5)_"-"_$E(%,6,7)_"-"_(1700+$E(%,1,3))_"@"_$E(%,9,10)_":"_$E(%,11,12)_":"_$E(%,13,14)
 | 
|---|
 | 76 |  .S OUT=$S(NOTIME:$P(X,"@",1),1:X)
 | 
|---|
 | 77 |  Q OUT
 | 
|---|
 | 78 |  ;
 | 
|---|
 | 79 | RES(DOMAIN,SSN) ; -- Determines whether a request is manually or
 | 
|---|
 | 80 |  ;            automatically processed and returns the reason
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 |  ;              INPUT  : DOMAIN      = E-mail address of facility
 | 
|---|
 | 83 |  ;                       SSN         = requested name or SSN in internal
 | 
|---|
 | 84 |  ;                                     format
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 |  ;              OUTPUT : 1^DFN       = automatic process
 | 
|---|
 | 87 |  ;                      -N^Reason    = manual process
 | 
|---|
 | 88 |  ;                          where
 | 
|---|
 | 89 |  ;                            -1 = bad input or no input, error
 | 
|---|
 | 90 |  ;                            -2 = patient not found
 | 
|---|
 | 91 |  ;                            -3 = ambiguous patient (not currently used)
 | 
|---|
 | 92 |  ;                            -4 = sensitive patient
 | 
|---|
 | 93 |  ;                            -5 = domain not in work group
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  N SENPT,DFN,DOMDA
 | 
|---|
 | 96 |  Q:($G(SSN)="") "-1^Did not pass patient's name or SSN"
 | 
|---|
 | 97 |  Q:($G(DOMAIN)="") "-1^Did not pass remote domain"
 | 
|---|
 | 98 |  ;
 | 
|---|
 | 99 |  S DFN=$$GETDFN^VAQUTL97(SSN,1)
 | 
|---|
 | 100 |  Q:DFN=-1 "-2^Patient not found"
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  S SENPT=$$GETSEN^VAQUTL97(+DFN)
 | 
|---|
 | 103 |  Q:SENPT=1 "-4^Sensitive patient"
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 |  S DOMDA=+$$FIND1^DIC(4.2,"","BMX",DOMAIN,"B^C","","ERROR")
 | 
|---|
 | 106 |  Q:'$D(^VAT(394.82,"C",DOMDA)) "-5^Domain not in work group"
 | 
|---|
 | 107 |  ;
 | 
|---|
 | 108 |  Q ("1^"_(+DFN)) ; -- Automatic process
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 | DA(FLE,DNPT) ; -- Returns entry number in sub file (DA)
 | 
|---|
 | 111 |  ;
 | 
|---|
 | 112 |  ;              INPUT  : FLE         = Sub file number
 | 
|---|
 | 113 |  ;                       DNPT        = Pointer to patient in main file
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 |  ;              OUTPUT : DA          = Entry number to sub file
 | 
|---|
 | 116 |  ;                       -1          = bad input or no input, error
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 |  N MFLE,GLOBAL,NODE,SUBNO,ENTRY,ND
 | 
|---|
 | 119 |  Q:'$D(FLE) -1
 | 
|---|
 | 120 |  Q:'$D(DNPT) -1
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 |  S MFLE=$G(^DD(FLE,0,"UP"))
 | 
|---|
 | 123 |  S MFLD="",MFLD=$O(^DD(MFLE,"SB",FLE,MFLD))
 | 
|---|
 | 124 |  S GLOBAL=$G(^DIC(MFLE,0,"GL"))
 | 
|---|
 | 125 |  S NODE=$G(^DD(MFLE,MFLD,0))
 | 
|---|
 | 126 |  S SUBNO=$P($P(NODE,U,4),";",1)
 | 
|---|
 | 127 |  S ND=GLOBAL_DNPT_","_SUBNO_",0)"
 | 
|---|
 | 128 |  S NODE=$G(@ND)
 | 
|---|
 | 129 |  S ENTRY=$P(NODE,U,4)
 | 
|---|
 | 130 |  Q ENTRY ; -- entry number in subfile
 | 
|---|
 | 131 |  ;
 | 
|---|
 | 132 | END ; -- End of code
 | 
|---|
 | 133 |  QUIT
 | 
|---|