Scheduling Issues

From VistApedia
Revision as of 13:56, 15 December 2008 by Kdtop (talk | contribs) (Example of Browsing into the Future)
Jump to: navigation, search

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

DATA DICTIONARY NOTES

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]


SAMPLE RECORD

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"

EXAMPLE OF INDEFINITE SLOT PATTERN

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 PATTERN slots for 5 weeks.
  • The "ST" node holds PATTERN entries for 5 weeks, starting at given date.
  • The "T" node holds the 10 min interval slots, starting at the given date.
  • The TEMPLATE itself is stored in the T1 node. Because there was no prior entry, and no end date, then 9999999 ending date is used


EXAMPLE OF SLOT PATTERN FOR SET DAYS

Below is another pattern. Again, I cleared the location first.

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
  • The "ST" node holds the PATTERN entry for each of the 2 days specified by the user
  • 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.


EXAMPLE OF MIXED FIXED AND THEN INDEFINITE DAYS

Below is a pattern were I created a set pattern in the future, then attempted to create an indefinite pattern starting BEFORE this fixed period. The result is that the pattern end date is set to the future date.

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+8  (DEC 21, 2008)  SUNDAY

 TIME: 0800-1000   # APPTS/SLOT : 1//  
 TIME: 
[1 1 1 1|1 1 1 1] 
...PATTERN OK FOR SUNDAYS INDEFINITELY? n  (No)
...FOR DEC 21,2008? No// y  (Yes) ...OK        
...FOR DEC 28,2008? No// y  (Yes) ...OK        
...FOR JAN  4,2009? No// y  (Yes) ...OK        
...FOR JAN 11,2009? No//   (No)                
...FOR JAN 18,2009? No// ^                     

AVAILABILITY DATE: 
GTM>do ^SDB


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

AVAILABILITY DATE: t+1  (DEC 14, 2008)  SUNDAY

 TIME: 0900-1100   # APPTS/SLOT : 1//  2
 TIME: 
|       [2 2 2 2|2 2 2 2] 
...PATTERN OK FOR SUNDAYS UNTIL DEC 21,2008? y  (Yes)
...EXCUSE ME, I'M WORKING AS FAST AS I CAN...        
PATTERN FILED!                                       

AVAILABILITY DATE: 


Select CLINIC NAME: 
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",3081221,0)=3081221                         
^SC(10,"OST",3081221,1)="SU 21  [1 1 1 1|1 1 1 1]
^SC(10,"OST",3081228,0)=3081228 
^SC(10,"OST",3081228,1)="SU 28  [1 1 1 1|1 1 1 1]  
^SC(10,"OST",3090104,0)=3090104  
^SC(10,"OST",3090104,1)="SU 04  [1 1 1 1|1 1 1 1]
^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",3081214,0)=3081214  
^SC(10,"ST",3081214,1)="SU 14  |       [2 2 2 2|2 2 2 2] 
^SC(10,"ST",3081221,0)=3081221
^SC(10,"ST",3081221,1)="SU 21  [1 1 1 1|1 1 1 1]   
^SC(10,"ST",3081221,9)=10
^SC(10,"ST",3081228,0)=3081228
^SC(10,"ST",3081228,1)="SU 28  [1 1 1 1|1 1 1 1] 
^SC(10,"ST",3081228,9)=10
^SC(10,"ST",3090104,0)=3090104
^SC(10,"ST",3090104,1)="SU 04  [1 1 1 1|1 1 1 1] 
^SC(10,"ST",3090104,9)=10
^SC(10,"T",0)="^44.002D^3081214^19"
^SC(10,"T",3081214,0)=3081214
^SC(10,"T",3081214,2,0)="^44.004A^8^8"
^SC(10,"T",3081214,2,1,0)="0900^2"
^SC(10,"T",3081214,2,2,0)="0915^2"
^SC(10,"T",3081214,2,3,0)="0930^2" 
^SC(10,"T",3081214,2,4,0)="0945^2"
^SC(10,"T",3081214,2,5,0)="1000^2"
^SC(10,"T",3081214,2,6,0)="1015^2"
^SC(10,"T",3081214,2,7,0)="1030^2"
^SC(10,"T",3081214,2,8,0)="1045^2"
^SC(10,"T",3081221,0)=3081221
^SC(10,"T",3081221,2,0)="^44.004A^8^8"
^SC(10,"T",3081221,2,1,0)="0800^1"
^SC(10,"T",3081221,2,2,0)="0815^1"
^SC(10,"T",3081221,2,3,0)="0830^1"
^SC(10,"T",3081221,2,4,0)="0845^1"
^SC(10,"T",3081221,2,5,0)="0900^1"
^SC(10,"T",3081221,2,6,0)="0915^1"
^SC(10,"T",3081221,2,7,0)="0930^1"
^SC(10,"T",3081221,2,8,0)="0945^1"
^SC(10,"T0",0)="^44.06A^^"
^SC(10,"T0",3081221,0)=3081221
^SC(10,"T0",3081221,1)="|       [2 2 2 2|2 2 2 2] 
^SC(10,"T1",0)="^44.07A^^"

Comments:

  • Because I first added a set pattern (not indefinite) at t+8, I was then not given the option to add an indefinite pattern. Instead, I was given the option for a pattern from now until t+8.
  • OST nodes were made for the first fixed pattern, and then T0 node was set for PATTERN entry.
  • T node entries were made for each of the two sets. There is one pattern starting at 3081214, which changes at 3081221.
  • ST node entries again show availability PATTERN combined from both the SPECIAL and TEMPLATE entries.
  • Notice presences of ^SC(IEN,"ST",FMDate,9)=IEN nodes. This means that the pattern should be taken from the OST node of the same date, not the T0 nodes

EXAMPLE OF INDEFINITE PATTERN, AND THEN FIXED DAYS ADDED

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

AVAILABILITY DATE: t  (DEC 15, 2008)

                                     MONDAY


  TIME: 0800-1000   # APPTS/SLOT : 1//

  TIME:
[1 1 1 1|1 1 1 1]
...PATTERN OK FOR MONDAYS INDEFINITELY? y  (Yes)
...HMMM, I'M WORKING AS FAST AS I CAN...
PATTERN FILED!


AVAILABILITY DATE: t+14  (DEC 29, 2008)

                                     MONDAY


  TIME: 0900-1100   # APPTS/SLOT : 1//  2

  TIME:
|       [2 2 2 2|2 2 2 2]
...PATTERN OK FOR MONDAYS INDEFINITELY? n  (No)
...FOR DEC 29,2008? No// y  (Yes) ...OK
...FOR JAN  5,2009? No// y  (Yes) ...OK
...FOR JAN 12,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",3081229,0)=3081229
^SC(10,"OST",3081229,1)="MO 29  |       [2 2 2 2|2 2 2 2]   
^SC(10,"OST",3090105,0)=3090105
^SC(10,"OST",3090105,1)="MO 05  |       [2 2 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,"S",0)="^44.001DA^^"
^SC(10,"S",3081215.09,0)=3081215.09
^SC(10,"S",3081215.09,1,0)="^44.003PA^^"
^SC(10,"S",3081215.09,1,1,0)="70774^15^^^^73^3081213"
^SC(10,"S",3090223.083,0)=3090223.083
^SC(10,"S",3090223.083,1,0)="^44.003PA^^"
^SC(10,"S",3090223.083,1,1,0)="1^15^^^^73^3081213"
^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  [1 1 1 1|0 1 1 1]            
^SC(10,"ST",3081222,0)=3081222
^SC(10,"ST",3081222,1)="MO 22  [1 1 1 1|1 1 1 1] "
^SC(10,"ST",3081229,0)=3081229
^SC(10,"ST",3081229,1)="MO 29  |       [2 2 2 2|2 2 2 2]    
^SC(10,"ST",3081229,9)=10
^SC(10,"ST",3090105,0)=3090105
^SC(10,"ST",3090105,1)="MO 05  |       [2 2 2 2|2 2 2 2]    
^SC(10,"ST",3090105,9)=10
^SC(10,"ST",3090112,0)=3090112
^SC(10,"ST",3090112,1)="MO 12  [1 1 1 1|1 1 1 1] "
^SC(10,"ST",3090223,0)=3090223
^SC(10,"ST",3090223,1)="MO 23  [1 1 0 1|1 1 1 1]            
^SC(10,"T",0)="^44.002D^3081229^25"
^SC(10,"T",3081215,0)=3081215
^SC(10,"T",3081215,2,0)="^44.004A^8^8"
^SC(10,"T",3081215,2,1,0)="0800^1"
^SC(10,"T",3081215,2,2,0)="0815^1"
^SC(10,"T",3081215,2,3,0)="0830^1"
^SC(10,"T",3081215,2,4,0)="0845^1"
^SC(10,"T",3081215,2,5,0)="0900^1"
^SC(10,"T",3081215,2,6,0)="0915^1"
^SC(10,"T",3081215,2,7,0)="0930^1"
^SC(10,"T",3081215,2,8,0)="0945^1"
^SC(10,"T",3081229,0)=3081229
^SC(10,"T",3081229,2,0)="^44.004A^8^8"
^SC(10,"T",3081229,2,1,0)="0900^2"
^SC(10,"T",3081229,2,2,0)="0915^2"
^SC(10,"T",3081229,2,3,0)="0930^2"
^SC(10,"T",3081229,2,4,0)="0945^2"
^SC(10,"T",3081229,2,5,0)="1000^2"
^SC(10,"T",3081229,2,6,0)="1015^2"
^SC(10,"T",3081229,2,7,0)="1030^2"
^SC(10,"T",3081229,2,8,0)="1045^2"
^SC(10,"T0",0)="^44.06A^^"
^SC(10,"T1",0)="^44.07A^^"
^SC(10,"T1",9999999,0)=9999999
^SC(10,"T1",9999999,1)="[1 1 1 1|1 1 1 1] "

Comments

  • The TEMPLATE node (T1) is not changed by the subsequent addition of fixed days.
  • The PATTERN node (ST) shows the mixture of the repeating template with superimposed fixed days.
  • The AVAILABILITY node (T) has the availability times change starting at 3081229. This means that one can't simply look at the latest date in the T nodes and use that to determine slots.

EXAMPLE OF APPOINTMENT ADDED

Below is a record with just 1 appt was made for 12/15/08@0900

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,"S",0)="^44.001DA^^"
^SC(10,"S",3081215.09,0)=3081215.09
^SC(10,"S",3081215.09,1,0)="^44.003PA^^"
^SC(10,"S",3081215.09,1,1,0)="70774^15^^^^73^3081213"
^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|1 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^20"
^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,"T0",0)="^44.06A^^"
^SC(10,"T1",0)="^44.07A^^"

Comments:

  • Notice that the PATTERN node ("ST"), shows only 1 (not 2) spaces available at the appt time. Thus this is where the record of CURRENT AVAILABILITY is stored.
  • The AVAILABILITY "T" node value of "2" patients allowd at 0900 is NOT changed.


Example of DELETING appts

Below shows an example of deleting appts, done by redefining the available appts for the same date.

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

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


 TIME: 0830-0840   [ TIME SPAN ENTERED NOT CONSISTENT WITH 15 MIN APPT LENGTH ]
 TIME: 0830-0845   # APPTS/SLOT : 1//  2
 TIME: 0900-1130   # APPTS/SLOT : 1//  
 TIME: 1300-1315   # APPTS/SLOT : 1//  
 TIME: 1330-1630   # APPTS/SLOT : 1//  
 TIME: 
|   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] 
...PATTERN OK FOR MONDAYS INDEFINITELY? y  (Yes)                      
...HMMM, LET ME THINK ABOUT THAT A MOMENT...                          
PATTERN FILED!                                                        
AVAILABILITY DATE: 


Select CLINIC NAME: 
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,"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,"S",0)="^44.001DA^^"                             
^SC(10,"S",3081215.09,0)=3081215.09                     
^SC(10,"S",3081215.09,1,0)="^44.003PA^^"                
^SC(10,"S",3081215.09,1,1,0)="70774^15^^^^73^3081213"   
^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] [0 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1]"
^SC(10,"ST",3081222,0)=3081222
^SC(10,"ST",3081222,1)="MO 22  |   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] "
^SC(10,"ST",3081229,0)=3081229 
^SC(10,"ST",3081229,1)="MO 29  |   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] "
^SC(10,"ST",3090105,0)=3090105 
^SC(10,"ST",3090105,1)="MO 05  |   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] "
^SC(10,"ST",3090112,0)=3090112  
^SC(10,"ST",3090112,1)="MO 12  |   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] "
^SC(10,"T",0)="^44.002D^3081215^21"
^SC(10,"T",3081215,0)=3081215 
^SC(10,"T",3081215,2,0)="^44.004A^24^24" 
^SC(10,"T",3081215,2,1,0)="0830^2" 
^SC(10,"T",3081215,2,2,0)="0900^1"
^SC(10,"T",3081215,2,3,0)="0915^1"
^SC(10,"T",3081215,2,4,0)="0930^1"
^SC(10,"T",3081215,2,5,0)="0945^1"
^SC(10,"T",3081215,2,6,0)="1000^1"
^SC(10,"T",3081215,2,7,0)="1015^1"
^SC(10,"T",3081215,2,8,0)="1030^1"
^SC(10,"T",3081215,2,9,0)="1045^1"
^SC(10,"T",3081215,2,10,0)="1100^1" 
^SC(10,"T",3081215,2,11,0)="1115^1" 
^SC(10,"T",3081215,2,12,0)="1300^1" 
^SC(10,"T",3081215,2,13,0)="1330^1" 
^SC(10,"T",3081215,2,14,0)="1345^1" 
^SC(10,"T",3081215,2,15,0)="1400^1" 
^SC(10,"T",3081215,2,16,0)="1415^1" 
^SC(10,"T",3081215,2,17,0)="1430^1" 
^SC(10,"T",3081215,2,18,0)="1445^1" 
^SC(10,"T",3081215,2,19,0)="1500^1" 
^SC(10,"T",3081215,2,20,0)="1515^1" 
^SC(10,"T",3081215,2,21,0)="1530^1" 
^SC(10,"T",3081215,2,22,0)="1545^1" 
^SC(10,"T",3081215,2,23,0)="1600^1" 
^SC(10,"T",3081215,2,24,0)="1615^1" 
^SC(10,"T0",0)="^44.06A^^"  
^SC(10,"T1",0)="^44.07A^^"  
^SC(10,"T1",9999999,0)=9999999  
^SC(10,"T1",9999999,1)="|   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] "       

GTM>do ^SDB

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

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

 TIME: 0830-0845   # APPTS/SLOT : 1//  
 TIME: 
|   [1] 
...PATTERN OK FOR MONDAYS INDEFINITELY? y  (Yes)
...HMMM, LET ME PUT YOU ON 'HOLD' FOR A SECOND...
PATTERN FILED!                                    
AVAILABILITY DATE:  
Select CLINIC NAME: 
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,"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,"S",0)="^44.001DA^^"
^SC(10,"S",3081215.09,0)=3081215.09
^SC(10,"S",3081215.09,1,0)="^44.003PA^^"
^SC(10,"S",3081215.09,1,1,0)="70774^15^^^^73^3081213"
^SC(10,"S",3081215.09,1,1,"OB")="O"
^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  |   [1]  *    "
^SC(10,"ST",3081222,0)=3081222
^SC(10,"ST",3081222,1)="MO 22  |   [1] "
^SC(10,"ST",3081229,0)=3081229
^SC(10,"ST",3081229,1)="MO 29  |   [1] "
^SC(10,"ST",3090105,0)=3090105
^SC(10,"ST",3090105,1)="MO 05  |   [1] "
^SC(10,"ST",3090112,0)=3090112
^SC(10,"ST",3090112,1)="MO 12  |   [1] "
^SC(10,"T",0)="^44.002D^3081215^22"
^SC(10,"T",3081215,0)=3081215
^SC(10,"T",3081215,2,0)="^44.004A^1^1"
^SC(10,"T",3081215,2,1,0)="0830^1"
^SC(10,"T0",0)="^44.06A^^"
^SC(10,"T1",0)="^44.07A^^"
^SC(10,"T1",3081215,0)=3081215
^SC(10,"T1",3081215,1)="|   [2] [1 1 1 1|1 1 1 1|1 1]   |       [1] [1 1|1 1 1 1|1 1 1 1|1 1] "
^SC(10,"T1",9999999,0)=9999999
^SC(10,"T1",9999999,1)="|   [1] "

Comments:

  • The "T" nodes are simply erased and replaced by the new pattern
  • The "T1" node has 2 date ranges. 1st is up to (but not including) 3081215, and the 2nd is from 3081215 onward
  • The "ST" node shows a * that I think indicates an appt with no slot

Example of Browsing into the Future

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,"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,"S",0)="^44.001DA^^"                             
^SC(10,"S",3081215.09,0)=3081215.09                     
^SC(10,"S",3081215.09,1,0)="^44.003PA^^"                
^SC(10,"S",3081215.09,1,1,0)="70774^15^^^^73^3081213"   
^SC(10,"S",3090223.083,0)=3090223.083                   
^SC(10,"S",3090223.083,1,0)="^44.003PA^^"               
^SC(10,"S",3090223.083,1,1,0)="1^15^^^^73^3081213"      
^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  |   [1 1|0 1 1 1]        
^SC(10,"ST",3081222,0)=3081222
^SC(10,"ST",3081222,1)="MO 22  |   [1 1|1 1 1 1] "
^SC(10,"ST",3081229,0)=3081229
^SC(10,"ST",3081229,1)="MO 29  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090105,0)=3090105
^SC(10,"ST",3090105,1)="MO 05  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090112,0)=3090112
^SC(10,"ST",3090112,1)="MO 12  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090119,0)=3090119
^SC(10,"ST",3090119,1)="MO 19  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090126,0)=3090126
^SC(10,"ST",3090126,1)="MO 26  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090202,0)=3090202
^SC(10,"ST",3090202,1)="MO 02  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090209,0)=3090209
^SC(10,"ST",3090209,1)="MO 09  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090216,0)=3090216
^SC(10,"ST",3090216,1)="MO 16  |   [1 1|1 1 1 1] "
^SC(10,"ST",3090223,0)=3090223
^SC(10,"ST",3090223,1)="MO 23  |   [0 1|1 1 1 1] "
^SC(10,"T",0)="^44.002D^3081215^23"
^SC(10,"T",3081215,0)=3081215
^SC(10,"T",3081215,2,0)="^44.004A^6^6"
^SC(10,"T",3081215,2,1,0)="0830^1"
^SC(10,"T",3081215,2,2,0)="0845^1"
^SC(10,"T",3081215,2,3,0)="0900^1"
^SC(10,"T",3081215,2,4,0)="0915^1"
^SC(10,"T",3081215,2,5,0)="0930^1"
^SC(10,"T",3081215,2,6,0)="0945^1"
^SC(10,"T0",0)="^44.06A^^"
^SC(10,"T1",0)="^44.07A^^"
^SC(10,"T1",9999999,0)=9999999
^SC(10,"T1",9999999,1)="|   [1 1|1 1 1 1] "

Comments:

  • An inital ^SDB was used, and 5 week's worth of MONDAY's were created
  • Then, as I used the MAKE AN APPOINTMENT menu option, and browsed into the future, more days were automatically added to the "ST" nodes
  • Finally, an appt was set at 2/23/09@0800
  • Notee: As I have cleared this test clinic each time between tests, I have not cleared out the S nodes, which are actual existing appts. Notice that when the current availability string is constructed for the given date, pre-existing appts are taken into account, and automatically notes (e.g. 12/15/08@0900 appt is shown.)

= Patterns to consider

Below are possible scheduling patterns to consider. I will use *** to indicated days using a TEMPLATE, and !!! indicate days that were specified as specialized patterns (i.e. fixed days). 1**** means that *** days were added first. 2***** means that these were added second, 3!!!! would be added third etc.

  • 1***** 2!!! **** 3!!!
  • 2***** 1!!! 3********
  • others...