Scheduling Issues

From VistApedia
Revision as of 02:03, 14 December 2008 by Kdtop (talk | contribs)
Jump to: navigation, search

This will contain notes as the data structures for clinic scheduling is explored.

Outpatient clinics are stored in the HOSPITAL LOCATION FILE.

Appointment slots are held in the AVAILABILITY field, node "T"

Here is the relevant DD definitions:

AVAILABILITY subfile, and the SCHEDULE TIME sub-subfile.
For a given date, it specifies the number of patients allowed in each slot
-------------------------------------------------------------
   T;0               1920  AVAILABILITY                    <-Mult [44.002DA]
80   -0;1              .01   -AVAILABILITY                              [MDX]
     -2;0                2   -SCHEDULE TIME                  <-Mult [44.004A]
81    --0;1            .01    --SCHEDULE TIME                           [MFX]
82    --0;2              1    --NUMBER OF PATIENTS                    [NJ2,0]
83   -Computed           3   -DAY OF WEEK                              [CJ15]
84   -Computed           4   -NUMBEROFDAY                               [CJ1]
Date/Time set up for clinic availability
-------------------------------------------------------------
85  STT;1           1920.9  AVAILABILITY FLAG                             [D]
PATTERN subfile.  For a given date, it shows avail slots
-------------------------------------------------------------
    ST;0              1921  PATTERN                     W:^ <-Mult [44.005DA]
86   -0;1              .01   -PATTERN DATE                              [MDX]
87   -1;E1,90            1   -CURRENT AVAILABILITY                        [F]
88   -Computed           2   -MAINTENANCE                              [CJ8X]
89   -9;1                3   -SPECIAL AVAILABILITY FLAG                  [DX]
    OST;0           1921.5  SPECIAL PATTERN            W:^ <-Mult [44.0002DA]
90   -0;1              .01   -PATTERN DATE                               [DX]
91   -1;E1,90            1   -ORIGINAL AVAILABILITY                       [F]
XDAY TEMPLATE subfile entries.  
For a given LIMIT DATE, it stores a master pattern. 
-------------------------------------------------------------
   T0;0              1922  SUNDAY TEMPLATE               W:^ <-Mult [44.06A]
92   -0;1              .01   -LIMIT DATE                             [NJ7,0X]
93   -1;E1,80            1   -MASTER PATTERN                              [F]
    T1;0              1923  MONDAY TEMPLATE               W:^ <-Mult [44.07A]
94   -0;1              .01   -LIMIT DATE                             [NJ7,0X]
95   -1;E1,80            1   -MASTER PATTERN                              [F]
    T2;0              1924  TUESDAY TEMPLATE              W:^ <-Mult [44.08A]
96   -0;1              .01   -LIMIT DATE                             [NJ7,0X]
97   -1;E1,80            1   -MASTER PATTERN                              [F]
    T3;0              1925  WEDNESDAY TEMPLATE            W:^ <-Mult [44.09A]
98   -0;1              .01   -LIMIT DATE                             [NJ7,0X]
99   -1;1                1   -MASTER PATTERN                              [F]
    T4;0              1926  THURSDAY TEMPLATE            W:^ <-Mult [44.008A]
100  -0;1              .01   -LIMIT DATE                             [NJ7,0X]
101  -1;E1,80            1   -MASTER PATTERN                              [F]
    T5;0              1927  FRIDAY TEMPLATE              W:^ <-Mult [44.009A]
102  -0;1              .01   -LIMIT DATE                             [NJ7,0X]
103  -1;E1,80            1   -MASTER PATTERN                              [F]
    T6;0              1928  SATURDAY TEMPLATE           W:^ <-Mult [44.0001A]
104  -0;1              .01   -LIMIT DATE                             [NJ7,0X]
105   -1;E1,80            1   -MASTER PATTERN                              [F]


Below is a dump of a sample record

GTM>zwr ^SC(6,*)
^SC(6,0)="Laughlin_Office^lo^C^69^^^295^M^^^Laughlin MOB-1^^^^1^^Y^295^Y^^0^1^^1^^^^^^0"
^SC(6,99)="423-787-7000"
^SC(6,"AT")=9
^SC(6,"HUIAUTOPRINTER")=65
^SC(6,"HUIAUTOSITE")=2
^SC(6,"LTR")=1

Below are the "OST" node entries, which hold "SPECIAL PATTERN" subfile

^SC(6,"OST",0)="^44.0002DA^^"
^SC(6,"OST",3081123,0)=3081123
^SC(6,"OST",3081123,1)="SU 23  [   |   |   |   |   |   |   |   |   |   |   |  |   |   |   ]   "
^SC(6,"OST",3081207,0)=3081207
^SC(6,"OST",3081207,1)="SU 07  [   |   |   |   |   |   |   |   |   |   |   |  |   |   |   ]   "
^SC(6,"PC")=1
^SC(6,"PR",0)="^44.1P^2^2"
^SC(6,"PR",1,0)="73^1"
^SC(6,"PR",2,0)="83^0"
^SC(6,"PR","B",73,1)=""
^SC(6,"PR","B",83,2)=""
^SC(6,"PS")=1

Below are the "S" node entries, which are actual appts.

^SC(6,"S",0)="^44.001DA^^"
^SC(6,"S",3081123.103,0)=3081123.103
^SC(6,"S",3081123.103,1,0)="^44.003PA^^"
^SC(6,"S",3081123.103,1,1,0)="1^15^^^^73^3081123^^^"
^SC(6,"S",3081123.103,1,1,"C")="3081203.15^73^3081203.15^73^3081203^3081203"
^SC(6,"S",3081123.103,1,1,"OB")="O"
...
^SC(6,"S",3081205.133,0)=3081205.133
^SC(6,"S",3081205.133,1,0)="^44.003PA^^"
^SC(6,"S",3081205.133,1,1,0)="70774^10^^^^73^3081204"
^SC(6,"S",3081215.083,0)=3081215.083
^SC(6,"S",3081215.083,1,0)="^44.003PA^^"
^SC(6,"SDP")="3^365^^30"
^SC(6,"SL")="10^^^^^6^5^Y"

Below is the PATTERN subfile. For a given date, it shows avail slots

^SC(6,"ST",0)="^44.005"
^SC(6,"ST",3081205,0)=3081205
^SC(6,"ST",3081205,1)="FR 05      |     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 11 0 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081208,0)=3081208
^SC(6,"ST",3081208,1)="MO 08      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081209,0)=3081209
^SC(6,"ST",3081209,1)="TU 09      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081212,0)=3081212
^SC(6,"ST",3081212,1)="FR 12      |     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 11 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081215,0)=3081215
^SC(6,"ST",3081215,1)="MO 15      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081216,0)=3081216
^SC(6,"ST",3081216,1)="TU 16      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081219,0)=3081219
^SC(6,"ST",3081219,1)="FR 19      |     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 11 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081222,0)=3081222
^SC(6,"ST",3081222,1)="MO 22      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081223,0)=3081223
^SC(6,"ST",3081223,1)="TU 23      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081226,0)=3081226
^SC(6,"ST",3081226,1)="FR 26      |     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 11 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081229,0)=3081229
^SC(6,"ST",3081229,1)="MO 29      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3081230,0)=3081230
^SC(6,"ST",3081230,1)="TU 30      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3090102,0)=3090102
^SC(6,"ST",3090102,1)="FR 02      |     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 11 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3090105,0)=3090105
^SC(6,"ST",3090105,1)="MO 05      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3090106,0)=3090106
^SC(6,"ST",3090106,1)="TU 06      |     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1] [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"ST",3090109,0)=3090109
^SC(6,"ST",3090109,1)="FR 09      |     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 11 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "

Below is the AVAILABILITY subfile, and the SCHEDULE TIME sub-subfile. For a given date, it specifies the number of patients allowed in each slot.

^SC(6,"T",0)="^44.002DA^3081211^32"
^SC(6,"T",3081204,0)=3081204
^SC(6,"T",3081204,2,0)="^44.004A^20^20"
^SC(6,"T",3081204,2,1,0)="0830^1"
^SC(6,"T",3081204,2,2,0)="0900^1"
...
^SC(6,"T",3081204,2,19,0)="1530^1"
^SC(6,"T",3081204,2,20,0)="1545^1"
^SC(6,"T",3081205,0)=3081205
^SC(6,"T",3081205,2,0)="^44.004A^32^32"
^SC(6,"T",3081205,2,1,0)="0830^1"
^SC(6,"T",3081205,2,2,0)="0900^1"
^SC(6,"T",3081205,2,3,0)="0910^1"
^SC(6,"T",3081205,2,4,0)="0920^1"
^SC(6,"T",3081205,2,5,0)="0930^1"
...
^SC(6,"T",3081205,2,31,0)="1610^1"
^SC(6,"T",3081205,2,32,0)="1620^1"
^SC(6,"T",3081207,0)=3081207
^SC(6,"T",3081208,0)=3081208
^SC(6,"T",3081208,2,0)="^44.004A^27^27"
^SC(6,"T",3081208,2,1,0)="0830^1"
...
^SC(6,"T",3081208,2,26,0)="1610^1"
^SC(6,"T",3081208,2,27,0)="1620^1"
^SC(6,"T",3081209,0)=3081209
^SC(6,"T",3081209,2,0)="^44.004A^27^27"
^SC(6,"T",3081209,2,1,0)="0830^1"
^SC(6,"T",3081209,2,2,0)="0900^1"
^SC(6,"T",3081209,2,3,0)="0910^1"
^SC(6,"T",3081209,2,4,0)="0920^1"
^SC(6,"T",3081209,2,5,0)="0930^1"
^SC(6,"T",3081209,2,6,0)="0940^1"
^SC(6,"T",3081209,2,7,0)="1000^1"
^SC(6,"T",3081209,2,8,0)="1010^1"
^SC(6,"T",3081209,2,9,0)="1020^1"
^SC(6,"T",3081209,2,10,0)="1030^1"
^SC(6,"T",3081209,2,11,0)="1040^1"
^SC(6,"T",3081209,2,12,0)="1300^1"
^SC(6,"T",3081209,2,13,0)="1330^1"
^SC(6,"T",3081209,2,14,0)="1340^1"
^SC(6,"T",3081209,2,15,0)="1400^1"
^SC(6,"T",3081209,2,16,0)="1410^1"
^SC(6,"T",3081209,2,17,0)="1420^1"
^SC(6,"T",3081209,2,18,0)="1430^1"
^SC(6,"T",3081209,2,19,0)="1440^1" 
^SC(6,"T",3081209,2,20,0)="1500^1"
^SC(6,"T",3081209,2,21,0)="1510^1"
^SC(6,"T",3081209,2,22,0)="1520^1"
^SC(6,"T",3081209,2,23,0)="1530^1"
^SC(6,"T",3081209,2,24,0)="1540^1"
^SC(6,"T",3081209,2,25,0)="1600^1"
^SC(6,"T",3081209,2,26,0)="1610^1"
^SC(6,"T",3081209,2,27,0)="1620^1"
^SC(6,"T",3081211,0)=3081211

Below are the ___DAY TEMPLATE subfile entries. For a given LIMIT DATE, it stores a master pattern.

Monday

^SC(6,"T1",0)="^44.07A^^"
^SC(6,"T1",9999999,0)=9999999
^SC(6,"T1",9999999,1)="|     [1]   [1 1 1 1 1] [1 1 1 1 1] |          |           [1]   [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "

Tuesday

^SC(6,"T2",0)="^44.08A^^"
^SC(6,"T2",9999999,0)=9999999
^SC(6,"T2",9999999,1)="|     [1]   [1 1 1 1 1] [1 1 1 1 1] |           |           [1]   [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "

Wednesday

^SC(6,"T3",0)="^44.09A^^"

Thursday

^SC(6,"T4",0)="^44.08A^^"

Friday

^SC(6,"T5",0)="^44.09A^^"
^SC(6,"T5",3081205,0)=3081205
^SC(6,"T5",3081205,1)="|     [1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"T5",9999999,0)=9999999
^SC(6,"T5",9999999,1)="|     [1]   [1 1 1 1 1] [1 1 1 1 1] [1 1 1]     |           [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1] "
^SC(6,"TMG")="FPG"


Below is a location that had just 1 day added, specified to be used indefinitely. (Note: I cleared out all slots prior to running ^SDB)


Select CLINIC NAME: x_TEST_OFFICE       TOPPENBERG,KEVIN S
NAME: X_TEST_OFFICE//
ABBREVIATION:
CLINIC MEETS AT THIS FACILITY?: YES//
SERVICE: MEDICINE// ^ 

AVAILABILITY DATE: t+2  (DEC 15, 2008)

                                     MONDAY

  TIME: 0830-1000   # APPTS/SLOT : 1//  2
  TIME:
|   [2 2|2 2 2 2]
...PATTERN OK FOR MONDAYS INDEFINITELY? y  (Yes)
...EXCUSE ME, THIS MAY TAKE A FEW MOMENTS...
PATTERN FILED!

GTM>zwr ^SC(10,*)
^SC(10,0)="X_TEST_OFFICE^^C^^^^342^M^^^lo^^^^^^N^^Y^^^1"
^SC(10,"AT")=9
^SC(10,"PC")=1
^SC(10,"PR",0)="^44.1P^1^1"
^SC(10,"PR",1,0)="73^1"
^SC(10,"PR","B",73,1)=""
^SC(10,"PS")=0
^SC(10,"SDP")="5^365^^365"
^SC(10,"SL")="15^^8^^^4^5"
^SC(10,"ST",0)="^44.005"
^SC(10,"ST",3081215,0)=3081215
^SC(10,"ST",3081215,1)="MO 15  |   [2 2|2 2 2 2] "
^SC(10,"ST",3081222,0)=3081222
^SC(10,"ST",3081222,1)="MO 22  |   [2 2|2 2 2 2] "
^SC(10,"ST",3081229,0)=3081229
^SC(10,"ST",3081229,1)="MO 29  |   [2 2|2 2 2 2] "
^SC(10,"ST",3090105,0)=3090105
^SC(10,"ST",3090105,1)="MO 05  |   [2 2|2 2 2 2] "
^SC(10,"ST",3090112,0)=3090112
^SC(10,"ST",3090112,1)="MO 12  |   [2 2|2 2 2 2] "
^SC(10,"T",0)="^44.002D^3081215^11"
^SC(10,"T",3081215,0)=3081215
^SC(10,"T",3081215,2,0)="^44.004A^6^6"
^SC(10,"T",3081215,2,1,0)="0830^2"
^SC(10,"T",3081215,2,2,0)="0845^2"
^SC(10,"T",3081215,2,3,0)="0900^2"
^SC(10,"T",3081215,2,4,0)="0915^2"
^SC(10,"T",3081215,2,5,0)="0930^2"
^SC(10,"T",3081215,2,6,0)="0945^2"
^SC(10,"T1",0)="^44.07A^^"
^SC(10,"T1",9999999,0)=9999999
^SC(10,"T1",9999999,1)="|   [2 2|2 2 2 2] " 

Comments:

  • When adding a pattern indefinitely, it adds slots for specific days for 5 days after the given date.
  • The "T" node holds the 10 min interval slots, starting at the given date.
  • The indefinite patter itself is stored in the Tx slot. Because there was no prior entry, and no end date, then 9999999 ending date is used


Below is another patter. Again, I cleared the location firssst.

GTM>do ^SDB                                                          

Select CLINIC NAME: x_TEST_OFFICE       TOPPENBERG,KEVIN S
NAME: X_TEST_OFFICE//                                     
ABBREVIATION:                                             
CLINIC MEETS AT THIS FACILITY?: YES//                     
SERVICE: MEDICINE//                                       
NON-COUNT CLINIC? (Y OR N): NO// ^                        

AVAILABILITY DATE: t+2  (DEC 15, 2008) 

                                     MONDAY
 TIME: 0830-1000   # APPTS/SLOT : 1//  2

 TIME: 
|   [2 2|2 2 2 2] 
...PATTERN OK FOR MONDAYS INDEFINITELY? n  (No)
...FOR DEC 15,2008? No// y  (Yes) ...OK        
...FOR DEC 22,2008? No// y  (Yes) ...OK        
...FOR DEC 29,2008? No//   (No)                
...FOR JAN  5,2009? No//   (No)                
...FOR JAN 12,2009? No//   (No)                
...FOR JAN 19,2009? No//   (No)                
...FOR JAN 26,2009? No// ^

AVAILABILITY DATE:
GTM>zwr ^SC(10,*)
^SC(10,0)="X_TEST_OFFICE^^C^^^^342^M^^^lo^^^^^^N^^Y^^^1"
^SC(10,"AT")=9
^SC(10,"OST",0)="^44.0002DA^^"
^SC(10,"OST",3081215,0)=3081215
^SC(10,"OST",3081215,1)="MO 15  |   [2 2|2 2 2 2]                                               "
^SC(10,"OST",3081222,0)=3081222
^SC(10,"OST",3081222,1)="MO 22  |   [2 2|2 2 2 2]                                               "
^SC(10,"PC")=1
^SC(10,"PR",0)="^44.1P^1^1"
^SC(10,"PR",1,0)="73^1"
^SC(10,"PR","B",73,1)=""
^SC(10,"PS")=0
^SC(10,"SDP")="5^365^^365"
^SC(10,"SL")="15^^8^^^4^5"
^SC(10,"ST",0)="^44.005"
^SC(10,"ST",3081215,0)=3081215
^SC(10,"ST",3081215,1)="MO 15  |   [2 2|2 2 2 2]                                               "
^SC(10,"ST",3081215,9)=10
^SC(10,"ST",3081222,0)=3081222
^SC(10,"ST",3081222,1)="MO 22  |   [2 2|2 2 2 2]                                               "
^SC(10,"ST",3081222,9)=10
^SC(10,"T",0)="^44.002D^3081215^13"
^SC(10,"T",3081215,0)=3081215
^SC(10,"T",3081215,2,0)="^44.004A^6^6"
^SC(10,"T",3081215,2,1,0)="0830^2"
^SC(10,"T",3081215,2,2,0)="0845^2"
^SC(10,"T",3081215,2,3,0)="0900^2"
^SC(10,"T",3081215,2,4,0)="0915^2"
^SC(10,"T",3081215,2,5,0)="0930^2"
^SC(10,"T",3081215,2,6,0)="0945^2"
^SC(10,"T1",0)="^44.07A^^"


Comments:

  • When NOT adding a pattern indefinitely, it adds slots only for the days indicated by the user.
  • The "T" node holds the 10 min interval slots, starting at the given date, no change vs. indefinite addition
  • There is no Tx entries.
  • There is are OST node (SPECIAL PATTERN) entries for the specified days. Thus is seems that the OST node entries replace the Tx nodes.